Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。

一、命令行编译及各个细分编译过程

hello.c示例代码:

#include 

int main(void){  printf("Hello world\n"); return 0;}

编译:

gcc hello.c -o hello

如有必要,还需回答出细分的几个步骤:

gcc -E hello.c -o hello.i  # 预处理阶段gcc -S hello.i -o hello.s  # 编译阶段gcc -c hello.s -o hello.o  # 汇编阶段gcc hello.o -o hello       # 链接阶段

具体细节可查往期笔记:《C程序编译过程》

二、借助make来编译

少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile文件来执行一些gcc命令进行编译。

首先得创建一个Makefile文件,如:

hello:hello.c        gcc hello.c -o hello

编译运行:

上面更细分编译过程的Makefile文件如下:

关于make及Makefile更多内容可查阅:

【Linux笔记】make工程管理工具(一)

【Linux笔记】make工程管理工具(二)

三、借助CMake生成Makefile

实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

1、命令行操作

首先输入cmake --version命令查看cmake版本,若还没安装则执行如下命令安装:

sudo apt install cmake

下面开始实验演示。我们的cmake_test文件夹下有一个hello.c文件,在同文件夹下创建一个 CMakeLists.txt 文件:

输入如下内容:

cmake_minimum_required (VERSION 3.10.2)project (cmake_test)add_executable(cmake_test hello.c)

然后在cmake_test目录下依次输入如下命令生成Makefile文件:

mkdir build  # 创建build文件夹cd build     # 进入build文件夹cmake ../    # 在cmake_test文件夹下生成Makefile

执行结果如下:

关于CMakeLists.txt文件具体语法感兴趣的朋友可自行查阅资料进行学习。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。

我们把上一小节的CMakeLists.txthello.c文件放入新创建的文件夹cmake-gui_test中:

在终端输入 cmake-gui 命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:

sudo apt install cmake-qt-gui

如:

启动cmake-gui

查看cmake-gui_test文件夹:

编译运行:

以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,欢迎转发。

-END-

来源 :嵌入式大杂烩,作者:ZhengNL

推荐阅读

【01】C语言内存泄露很严重,如何应对?【02】编译C语言程序,使用 gcc 指令,而C++程序则推荐使用 g++指令!【03】C语言:优雅的字符串函数库【04】在C 语言中,请一定记得初始化局部变量!【05】嵌入式编程是否应该用C++替代C语言免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

c++图形化界面_还能这样用?Linux下如何编译C程序?相关推荐

  1. Cent os7 _ LINUX虚拟机安装_设置网络及图形化界面_安装教程

    准备工具(可到官网去下载): 1.VMware Workstation 15.5.6 版本 链接:https://pan.baidu.com/s/1o9w1Em91dYms0zR0fF7u3A 提取码 ...

  2. c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示

    文章来源:嵌入式大杂烩 作者:ZhengNL Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题. 一.命令行编译及各 ...

  3. kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟

    Arduino编程在所有单片机当中应该说是最简单的了,但是还可以更加简单. 比如说图形化编程,图形化编程真正让Arduino大众化了,因为谁都可以通过图形化编程方式来制作自己需要的小玩意. 啃萝卜 关 ...

  4. 小红帽怎样装图形化界面_纯技术篇:U盘装系统,不再多花冤枉钱

    U盘装系统,顾名思义就是用U盘安装电脑的操作系统.这里小编用现在最常见的大白菜装机软件来开始教程. 1.使用大白菜装机版制作大白菜U盘启动盘之前,需要准备一个存储空间大于2G的U盘. 2.下载并且安装 ...

  5. kafka 怎么样连接图形化界面_从零开始搭建Kafka+SpringBoot分布式消息系统

    前言 由于kafka强依赖于zookeeper,所以需先搭建好zookeeper集群.由于zookeeper是由java编写的,需运行在jvm上,所以首先应具备java环境. (ps:默认您的cent ...

  6. 小红帽怎样装图形化界面_红帽linux 怎么设置中文图形界面

    展开全部 设置中文图形界面来的操自作方法和步骤如下: 1.第bai一步,打开duubuntu设置(齿zhi轮位于右上角),或直接dao在左侧找到设置,如下图所示,然后进入下一步. 2.其次,完成上述步 ...

  7. ubuntu 无法进入startx_Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)

    进入命令行模式,执行下面的命令: rm -rf /etc/X11/xorg.conf cp /etc/X11/xorg.conf.failsafe /etc/X11/xorg.conf 重启电脑. 上 ...

  8. 零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)

    1.图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI). 即通过鼠标对菜单.按钮等图形化元素触发指令,并从标签.对话框 ...

  9. Python 图形化界面设计

    1.图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单.按钮等图形化元素触发指令,并从标签.对话框等 ...

最新文章

  1. 拒绝接口裸奔!开放API接口签名验证!
  2. Leangoo敏捷看板管理 6.3.8
  3. protoc-3.2.0-win32转java文件
  4. Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法...
  5. 凸包模板(Graham算法)
  6. 推荐ReactNative脚手架工具
  7. HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
  8. 项目方说性能达到百万TPS,如何测试它的可信度?
  9. 从零开始学Android(一)
  10. android dsd 播放器,Android中播放DSD音乐
  11. 如何创建计算机的桌面快捷方式,怎样创建桌面快捷方式 创建桌面快捷方式N种方法...
  12. java 有多少种锁_java有哪些锁?java锁种类盘点
  13. 在Namesilo上注册域名
  14. 纯CSS实现多行文本溢出显示省略号(兼容不同浏览器)
  15. 如何在手机APP中通过H5方式集成监控摄像头实时直播画面
  16. 过滤器(7)_过滤器处理 POST 请求乱码
  17. Ubuntu18.04.4安装与配置,让老机焕发青春
  18. “富勒”官网软件感染网银木马 360独家拦截 - 卫星杂谈 - 360官方论坛
  19. 一周新论文 | 2020年第13周 | 自然语言处理相关
  20. overleaf表格_搞定LaTeX论文中的表格

热门文章

  1. Secure Delivery Center (SDC)功能概述
  2. 朋友圈玩分身术!逼死用户的节奏?
  3. css学习_cs3s旋转的图片
  4. 极富创意的404错误个性页面设计欣赏
  5. golang: 类型转换和类型断言
  6. 分布式数据库切分规则介绍
  7. 阿里云短信官方的java示例是错误的
  8. 利用Oracle虚拟私有数据库进行整合
  9. 2016年ICT产业趋势预测
  10. python subprocess 模块