0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用python制作C语言在线编译器的小案例

电子工程师 来源:嵌入式开发爱好者 作者:嵌入式开发爱好者 2022-08-08 10:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家好,我是牛牛。 今天给大家分享一下利用python制作C语言在线编译器的小案例,主要包含以下几部分内容:
  • 项目构想与准备

  • 搭建python服务器

  • 前端页面

  • 后台逻辑实现


一、项目构想与准备

目标:使用python+codeMirror制作一款类似菜鸟教程的在线编译器。

1.1项目架构

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

1.2 开发环境

windows系统

python 3.7.1

mingw-get-setup

1.3技术栈

bootstrap构建前端页面

codeMirror代码编辑器插件

flask框架搭建后端服务器

1.4 环境准备

安装mingw-get-setup,下载地址:

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

安装成功后安装gcc,具体操作参考:

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

确保能在windows下运行gcc命令。

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

二、搭建python服务器

2.1新建项目

使用python自带的venv新建虚拟环境。

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

激活虚拟环境,安装flask,本项目采用pycharm开发,因此在settings配置项中选择当前目录下的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,书写如下代码:

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

运行命令,flask run开启服务。

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

访问:http://127.0.0.1:5000

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

到此,服务端先告一段落。

三、前端逻辑与代码实现

3.1项目中引入bootstrap

在bootstrap官网中下载bootstrap3.4.1,并将代码包放在项目目录下。

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

3.2在pages下新建index.html页面引入bootstrap.

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

3.3使用bootstrap构建前端页面

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

3.4添加codeMirror代码编辑器

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

添加到项目中

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

页面引入

注意引入的顺序

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

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

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

3.5 首页路由加载页面

设置模板文件夹和静态资源文件夹,引入render_template,渲染静态模板

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

修改页面静态资源路径

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

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

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

3.6 获取代码发送服务端

点击run按钮获取代码

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

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

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

渲染获取结果

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

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

四、服务端处理代码


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充电站

日常分享热门、有趣和实用的编程技术与编程案例,包括:嵌入式物联网、小程序、python、C/C++、JS、CSS、Nodejs、PHP等。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144652
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51091
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89604

原文标题:利用python实现C语言在线编译器

文章出处:【微信号:嵌入式开发爱好者,微信公众号:嵌入式开发爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本
    的头像 发表于 11-20 17:24 515次阅读
    开源鸿蒙技术大会2025丨<b class='flag-5'>编译器</b>与编程<b class='flag-5'>语言</b>分论坛:<b class='flag-5'>语言</b>驱动系统创新,<b class='flag-5'>编译</b>赋能生态繁荣

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动将高级语言代码转换为针对特定硬件优化的低级代码。Triton编译
    的头像 发表于 12-25 09:13 1335次阅读

    Triton编译器如何提升编程效率

    在现代软件开发中,编译器扮演着至关重要的角色。它们不仅将高级语言代码转换为机器可执行的代码,还通过各种优化技术提升程序的性能。Triton 编译器作为一种先进的编译器,通过多种方式提升
    的头像 发表于 12-25 09:12 1211次阅读

    Triton编译器在高性能计算中的应用

    先进的编译技术,为高性能计算提供了强大的支持。 Triton编译器简介 Triton编译器是一种开源的编译器框架,旨在为异构计算环境提供高效的编译
    的头像 发表于 12-25 09:11 1584次阅读

    Triton编译器的优化技巧

    (Instruction Selection) Triton 编译器在指令选择阶段采用了先进的算法来生成针对特定硬件架构优化的指令。这一阶段的目标是将高级中间表示(IR)转换为低级机器代码,同时尽可能地利用硬件
    的头像 发表于 12-25 09:09 1874次阅读

    Triton编译器的优势与劣势分析

    Triton编译器作为一种新兴的深度学习编译器,具有一系列显著的优势,同时也存在一些潜在的劣势。以下是对Triton编译器优势与劣势的分析: 优势 高效性能优化 : Triton编译器
    的头像 发表于 12-25 09:07 1882次阅读

    Triton编译器在机器学习中的应用

    1. Triton编译器概述 Triton编译器是NVIDIA Triton推理服务平台的一部分,它负责将深度学习模型转换为优化的格式,以便在NVIDIA GPU上高效运行。Triton编译器支持
    的头像 发表于 12-24 18:13 1639次阅读

    Triton编译器的常见问题解决方案

    Triton编译器作为一款专注于深度学习的高性能GPU编程工具,在使用过程中可能会遇到一些常见问题。以下是一些常见问题的解决方案: 一、安装与依赖问题 检查Python版本 Triton编译器通常
    的头像 发表于 12-24 18:04 6441次阅读

    TMS320C6000优化编译器v7.4测试版用户指南

    电子发烧友网站提供《TMS320C6000优化编译器v7.4测试版用户指南.pdf》资料免费下载
    发表于 12-24 17:42 0次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>编译器</b>v7.4测试版用户指南

    Triton编译器安装步骤详解

    1. 系统要求 在开始安装之前,请确保您的系统满足以下要求: 操作系统 :支持 Linux 或 Windows(通过 WSL 或 Cygwin)。 编译器 :GCC 或 Clang。 CMake
    的头像 发表于 12-24 17:35 4655次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过
    的头像 发表于 12-24 17:33 1481次阅读

    Triton编译器与其他编译器的比较

    的GPU编程框架,使开发者能够编写出接近手工优化的高性能GPU内核。 其他编译器 (如GCC、Clang、MSVC等): 定位:通用编译器,支持多种编程语言,广泛应用于各种软件开发场景。 目标:提供稳定、高效的
    的头像 发表于 12-24 17:25 1603次阅读

    Triton编译器功能介绍 Triton编译器使用教程

    Triton 是一个开源的编译器前端,它支持多种编程语言,包括 CC++、Fortran 和 Ada。Triton 旨在提供一个可扩展和可定制的
    的头像 发表于 12-24 17:23 2728次阅读

    HighTec C/C++编译器套件全面支持芯来RISC-V IP

    德国萨尔布吕肯,2024年12月5日——世界领先的汽车C/C++编译器解决方案提供商HighTec EDV Systeme GmbH宣布全面支持芯来科技的RISC-V IP。HighTec编译
    的头像 发表于 12-23 09:04 2010次阅读
    HighTec <b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>套件全面支持芯来RISC-V IP

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

    汽车编译器解决方案领先供货商HighTec EDV-Systeme GmbH宣布其针对汽车市场的高度优化C/C++编译器支持Andes晶心科技的RISC-V IP。这项支持对汽车软件开
    的头像 发表于 12-12 16:26 1573次阅读