你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux下直接使用gcc来编译

[复制链接]
gaosmile 发布时间:2020-10-26 20:38

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

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

hello.c示例代码:

#include <stdio.h>% M+ d' H% P; A; a# q) I

  e! R4 Q3 S0 V3 f! ?$ Kint main(void)
; k. p, {3 T5 s9 m: E. [7 o{
6 `& t9 U5 g0 u4 I printf("Hello world\n");" ?0 w/ f& t; G* w
return 0;
6 x6 f8 Y# f3 M8 y8 j4 d6 n}% ]9 ~6 B! G8 V  A7 J8 Q. q

编译:

gcc hello.c -o hello4 g* }! L, ~  k8 X9 C; z7 l  m& z) C
微信图片_20201026203240.png

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

gcc -E hello.c -o hello.i  # 预处理阶段. k7 Y$ W+ I5 ~2 o$ y$ X4 n
gcc -S hello.i -o hello.s  # 编译阶段; V8 H/ Q+ {" S- y7 l; ^  R
gcc -c hello.s -o hello.o  # 汇编阶段
9 E) I9 [0 D2 n( b1 j6 jgcc hello.o -o hello       # 链接阶段
6 B- [* r( S5 @0 \2 Y

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

二、借助make来编译

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

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

hello:hello.c
# Z2 m' N5 ]- W4 f9 p9 y) l        gcc hello.c -o hello
* Y3 k: N- Q3 {  R7 P2 V7 k, J

编译运行:

微信图片_20201026203308.png

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

微信图片_20201026203311.png

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

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

【Linux笔记】make工程管理工具(二)
. {1 T2 ~3 Y; W5 a4 p8 K" {: u

三、借助CMake生成Makefile

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

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

1、命令行操作

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

sudo apt install cmake5 G5 f# {% l! [2 O
微信图片_20201026203315.png

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

微信图片_20201026203326.png

输入如下内容:

cmake_minimum_required (VERSION 3.10.2)
9 t6 d) d; [" T: |project (cmake_test)
& \9 P5 P9 ?5 l1 ]) z7 e9 H7 Eadd_executable(cmake_test hello.c)

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

mkdir build  # 创建build文件夹
" z) T  b  i, e5 I; V; }' K; q1 Ycd build     # 进入build文件夹
4 x9 ]* \$ ?& D7 y& S1 W/ A  Ucmake ../    # 在cmake_test文件夹下生成Makefile
3 d+ G) C: J6 z  W5 d

执行结果如下:

微信图片_20201026203329.png

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

2、使用cmake-gui

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

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

微信图片_20201026203345.png

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

sudo apt install cmake-qt-gui
& H+ s) S' ]# m0 M

如:

微信图片_20201026203348.png

启动cmake-gui:

微信图片_20201026203352.png
微信图片_20201026203356.png
微信图片_20201026203359.png

查看cmake-gui_test文件夹:

微信图片_20201026203402.png

编译运行:

微信图片_20201026203405.png

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

, B% o- u  V5 i) v  a0 J3 y: a
赞 收藏 评论2 发布时间:2020-10-26 20:38

举报

2个回答
chrome777 回答时间:2020-10-27 17:11:02
感谢分享,已收藏
. V1 A- Y. V: e8 H
# L$ u: E" \# b' X! u! X: s$ i- e$ b2 N9 K
4 w- P8 |! |% P
safas 回答时间:2020-12-2 21:09:39
玩GCC依赖CMake而不自己写Makefile的都是stupid
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版