一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用python制作C語(yǔ)言在線編譯器的小案例

電子工程師 ? 來(lái)源:嵌入式開(kāi)發(fā)愛(ài)好者 ? 作者:嵌入式開(kāi)發(fā)愛(ài)好者 ? 2022-08-08 10:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是牛牛。 今天給大家分享一下利用python制作C語(yǔ)言在線編譯器的小案例,主要包含以下幾部分內(nèi)容:
  • 項(xiàng)目構(gòu)想與準(zhǔn)備

  • 搭建python服務(wù)器

  • 前端頁(yè)面

  • 后臺(tái)邏輯實(shí)現(xiàn)


一、項(xiàng)目構(gòu)想與準(zhǔn)備

目標(biāo):使用python+codeMirror制作一款類(lèi)似菜鳥(niǎo)教程的在線編譯器。

1.1項(xiàng)目架構(gòu)

3e9297e0-16c0-11ed-ba43-dac502259ad0.png

1.2 開(kāi)發(fā)環(huán)境

windows系統(tǒng)

python 3.7.1

mingw-get-setup

1.3技術(shù)棧

bootstrap構(gòu)建前端頁(yè)面

codeMirror代碼編輯器插件

flask框架搭建后端服務(wù)器

1.4 環(huán)境準(zhǔn)備

安裝mingw-get-setup,下載地址:

https://sourceforge.net/projects/mingw/

安裝成功后安裝gcc,具體操作參考:

https://www.cnblogs.com/liangliangge/p/14737419.html

確保能在windows下運(yùn)行g(shù)cc命令。

3ea0bffa-16c0-11ed-ba43-dac502259ad0.png

二、搭建python服務(wù)器

2.1新建項(xiàng)目

使用python自帶的venv新建虛擬環(huán)境。

3ebe6f50-16c0-11ed-ba43-dac502259ad0.png

激活虛擬環(huán)境,安裝flask,本項(xiàng)目采用pycharm開(kāi)發(fā),因此在settings配置項(xiàng)中選擇當(dāng)前目錄下的venv下的python.exe。

3ed40c8e-16c0-11ed-ba43-dac502259ad0.png

安裝命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask

3ef09c8c-16c0-11ed-ba43-dac502259ad0.png

新建server.py,書(shū)寫(xiě)如下代碼:

3f0d56e2-16c0-11ed-ba43-dac502259ad0.png

運(yùn)行命令,flask run開(kāi)啟服務(wù)。

3f1ee6fa-16c0-11ed-ba43-dac502259ad0.png

訪問(wèn):http://127.0.0.1:5000

3f3a831a-16c0-11ed-ba43-dac502259ad0.png

到此,服務(wù)端先告一段落。

三、前端邏輯與代碼實(shí)現(xiàn)

3.1項(xiàng)目中引入bootstrap

在bootstrap官網(wǎng)中下載bootstrap3.4.1,并將代碼包放在項(xiàng)目目錄下。

3f4dfa3a-16c0-11ed-ba43-dac502259ad0.png

3.2在pages下新建index.html頁(yè)面引入bootstrap.

3f68ef70-16c0-11ed-ba43-dac502259ad0.png

3.3使用bootstrap構(gòu)建前端頁(yè)面

3f8af926-16c0-11ed-ba43-dac502259ad0.png

3.4添加codeMirror代碼編輯器

下載地址:https://codemirror.net/5/

添加到項(xiàng)目中

3f9f1da2-16c0-11ed-ba43-dac502259ad0.png

頁(yè)面引入

注意引入的順序

3fb56800-16c0-11ed-ba43-dac502259ad0.png

3fd601a0-16c0-11ed-ba43-dac502259ad0.png

3fe5289c-16c0-11ed-ba43-dac502259ad0.png

3.5 首頁(yè)路由加載頁(yè)面

設(shè)置模板文件夾和靜態(tài)資源文件夾,引入render_template,渲染靜態(tài)模板

3ff56270-16c0-11ed-ba43-dac502259ad0.png

修改頁(yè)面靜態(tài)資源路徑

40146558-16c0-11ed-ba43-dac502259ad0.png

403277fa-16c0-11ed-ba43-dac502259ad0.png

4049e00c-16c0-11ed-ba43-dac502259ad0.png

3.6 獲取代碼發(fā)送服務(wù)端

點(diǎn)擊run按鈕獲取代碼

405c2a78-16c0-11ed-ba43-dac502259ad0.png

406dfabe-16c0-11ed-ba43-dac502259ad0.png

4083c790-16c0-11ed-ba43-dac502259ad0.png

渲染獲取結(jié)果

4094e4da-16c0-11ed-ba43-dac502259ad0.png

40a84d5e-16c0-11ed-ba43-dac502259ad0.png

四、服務(wù)端處理代碼


import subprocess
@app.route("/compiler/",methods=['post'])
def compiler():
    content = request.data
    with open("./test.c",'w',encoding='utf-8') as f:
        f.write(str(content,'utf-8'))
    cmd_order = 'gcc test.c -o test.out && test.out'
    cmd_p = subprocess.Popen(cmd_order, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    cmd_result = ""
    for i in cmd_p.stdout.readlines():
        cmd_result += i.decode()
    return cmd_result

40c2d4ee-16c0-11ed-ba43-dac502259ad0.png

代碼地址:git@gitee.com:amyliyanice/c-editor-online.git


牛牛IT充電站

日常分享熱門(mén)、有趣和實(shí)用的編程技術(shù)與編程案例,包括:嵌入式、物聯(lián)網(wǎng)、小程序、python、C/C++、JS、CSS、Nodejs、PHP等。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141797
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50232
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86774

原文標(biāo)題:利用python實(shí)現(xiàn)C語(yǔ)言在線編譯器

文章出處:【微信號(hào):嵌入式開(kāi)發(fā)愛(ài)好者,微信公眾號(hào):嵌入式開(kāi)發(fā)愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Triton編譯器與GPU編程的結(jié)合應(yīng)用

    Triton編譯器簡(jiǎn)介 Triton編譯器是一種針對(duì)并行計(jì)算優(yōu)化的編譯器,它能夠自動(dòng)將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為針對(duì)特定硬件優(yōu)化的低級(jí)代碼。Triton編譯
    的頭像 發(fā)表于 12-25 09:13 ?841次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開(kāi)發(fā)中,編譯器扮演著至關(guān)重要的角色。它們不僅將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為機(jī)器可執(zhí)行的代碼,還通過(guò)各種優(yōu)化技術(shù)提升程序的性能。Triton 編譯器作為一種先進(jìn)的編譯器,通過(guò)多種方式提升
    的頭像 發(fā)表于 12-25 09:12 ?750次閱讀

    Triton編譯器在高性能計(jì)算中的應(yīng)用

    先進(jìn)的編譯技術(shù),為高性能計(jì)算提供了強(qiáng)大的支持。 Triton編譯器簡(jiǎn)介 Triton編譯器是一種開(kāi)源的編譯器框架,旨在為異構(gòu)計(jì)算環(huán)境提供高效的編譯
    的頭像 發(fā)表于 12-25 09:11 ?971次閱讀

    Triton編譯器的優(yōu)化技巧

    (Instruction Selection) Triton 編譯器在指令選擇階段采用了先進(jìn)的算法來(lái)生成針對(duì)特定硬件架構(gòu)優(yōu)化的指令。這一階段的目標(biāo)是將高級(jí)中間表示(IR)轉(zhuǎn)換為低級(jí)機(jī)器代碼,同時(shí)盡可能地利用硬件
    的頭像 發(fā)表于 12-25 09:09 ?999次閱讀

    Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務(wù)平臺(tái)的一部分,它負(fù)責(zé)將深度學(xué)習(xí)模型轉(zhuǎn)換為優(yōu)化的格式,以便在NVIDIA GPU上高效運(yùn)行。Triton編譯器支持
    的頭像 發(fā)表于 12-24 18:13 ?994次閱讀

    Triton編譯器的常見(jiàn)問(wèn)題解決方案

    Triton編譯器作為一款專(zhuān)注于深度學(xué)習(xí)的高性能GPU編程工具,在使用過(guò)程中可能會(huì)遇到一些常見(jiàn)問(wèn)題。以下是一些常見(jiàn)問(wèn)題的解決方案: 一、安裝與依賴(lài)問(wèn)題 檢查Python版本 Triton編譯器通常
    的頭像 發(fā)表于 12-24 18:04 ?3044次閱讀

    Triton編譯器支持的編程語(yǔ)言

    Triton編譯器支持的編程語(yǔ)言主要包括以下幾種: 一、主要編程語(yǔ)言 Python :Triton編譯器通過(guò)
    的頭像 發(fā)表于 12-24 17:33 ?969次閱讀

    Triton編譯器與其他編譯器的比較

    的GPU編程框架,使開(kāi)發(fā)者能夠編寫(xiě)出接近手工優(yōu)化的高性能GPU內(nèi)核。 其他編譯器 (如GCC、Clang、MSVC等): 定位:通用編譯器,支持多種編程語(yǔ)言,廣泛應(yīng)用于各種軟件開(kāi)發(fā)場(chǎng)景。 目標(biāo):提供穩(wěn)定、高效的
    的頭像 發(fā)表于 12-24 17:25 ?1011次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個(gè)開(kāi)源的編譯器前端,它支持多種編程語(yǔ)言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個(gè)可擴(kuò)展和可定制的
    的頭像 發(fā)表于 12-24 17:23 ?1689次閱讀

    HighTec C/C++編譯器支持Andes晶心科技RISC-V IP

    汽車(chē)編譯器解決方案領(lǐng)先供貨商HighTec EDV-Systeme GmbH宣布其針對(duì)汽車(chē)市場(chǎng)的高度優(yōu)化C/C++編譯器支持Andes晶心科技的RISC-V IP。這項(xiàng)支持對(duì)汽車(chē)軟件開(kāi)
    的頭像 發(fā)表于 12-12 16:26 ?1087次閱讀

    MSP430優(yōu)化C/C++編譯器v21.6.0.LTS

    電子發(fā)燒友網(wǎng)站提供《MSP430優(yōu)化C/C++編譯器v21.6.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 11-08 14:57 ?0次下載
    MSP430優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>編譯器</b>v21.6.0.LTS

    ARM優(yōu)化C/C++編譯器 v20.2.0.LTS

    電子發(fā)燒友網(wǎng)站提供《ARM優(yōu)化C/C++編譯器 v20.2.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:46 ?0次下載
    ARM優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>編譯器</b> v20.2.0.LTS

    TMS320C6000優(yōu)化C/C++編譯器v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化C/C++編譯器v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:35 ?1次下載
    TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>編譯器</b>v8.3.x

    TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS

    電子發(fā)燒友網(wǎng)站提供《TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 10-31 10:10 ?0次下載
    TMS320<b class='flag-5'>C</b>28x優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>編譯器</b>v22.6.0.LTS

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>編譯器</b>