Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。
一、命令行编译及各个细分编译过程
hello.c示例代码:
#include
编译:
gcchello.c-ohello

如有必要,还需回答出细分的几个步骤:
gcc-Ehello.c-ohello.i#预处理阶段 gcc-Shello.i-ohello.s#编译阶段 gcc-chello.s-ohello.o#汇编阶段 gcchello.o-ohello#链接阶段
具体细节可查往期笔记:《C程序编译过程》
二、借助make来编译
少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile文件来执行一些gcc命令进行编译。
首先得创建一个Makefile文件,如:
hello:hello.c gcchello.c-ohello
编译运行:

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

关于make及Makefile更多内容可查阅:
【Linux笔记】make工程管理工具(一)
【Linux笔记】make工程管理工具(二)
三、借助CMake生成Makefile
实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。
1、命令行操作
首先输入cmake --version命令查看cmake版本,若还没安装则执行如下命令安装:
sudoaptinstallcmake

下面开始实验演示。我们的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文件:
mkdirbuild#创建build文件夹 cdbuild#进入build文件夹 cmake../#在cmake_test文件夹下生成Makefile
执行结果如下:

关于CMakeLists.txt文件具体语法感兴趣的朋友可自行查阅资料进行学习。
2、使用cmake-gui
上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。
我们把上一小节的CMakeLists.txt 与hello.c文件放入新创建的文件夹cmake-gui_test中:

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

启动cmake-gui:



查看cmake-gui_test文件夹:

编译运行:

以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,欢迎转发。
-
嵌入式
+关注
关注
5186文章
20151浏览量
328884 -
Linux
+关注
关注
88文章
11628浏览量
217983 -
C程序
+关注
关注
4文章
255浏览量
37424
原文标题:还能这样用?Linux下如何编译C程序?
文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
别再迷糊了!Linux交叉编译到底是个啥?一文讲清楚
rtsmart开启C++特性支持后,工具链编译内核不通过怎么解决?
如何单独编译linux内核?
linux下使用cyusbserial SDK错误怎么解决?
能否提供Linux下USB转SPI模式的测试程序?
不借助Linux系统,在Windows下如何搭建ZMC900E交叉编译环境
Linux环境再升级:PLIN驱动程序正式发布
Linux内核编译失败?移动硬盘和虚拟机的那些事儿
FPGA Verilog HDL语法之编译预处理
rtsmart开启C++特性支持后,工具链编译内核不通过怎么解决?
在linux下编译了cyusbserial SDK生成so文件,但是运行测试程序和编写API都访问不到DLP3010EVM,为什么?
干货来喽!实用树莓派Linux编译指南
RZ T2H PCIe裸机程序开发和Linux下的配置介绍
实用树莓派Linux编译指南,打工人必备!

Linux下如何编译C程序?
评论