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

分享一些Linux下编译的过程及方法

[复制链接]
gaosmile 发布时间:2020-9-18 10:43
Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。
一、命令行编译及各个细分编译过程

hello.c示例代码:

#include <stdio.h>
0 k! o. U4 V3 b5 m9 A) S% t, f1 |; B$ l  [0 ?' G
int main(void)# c1 K% `5 R: i2 Y; K* W+ f
{
$ H! K* ?4 L7 m3 S# p/ a" q# q, E. H printf("Hello world\n");! d* X7 d1 u: q* I
return 0;
# i8 f) E/ D. V: ~1 Y& U% t}
) S- ~, U6 ~* H) Y' J. u

编译:

gcc hello.c -o hello
( i$ R; R* k: t1 O
微信图片_20200918103853.png

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

gcc -E hello.c -o hello.i  # 预处理阶段  E' s0 R$ N& y: C. r9 J
gcc -S hello.i -o hello.s  # 编译阶段' m  z# Q" w" L- e/ {3 W5 ]0 Q
gcc -c hello.s -o hello.o  # 汇编阶段
% {2 A& ^; V1 [gcc hello.o -o hello       # 链接阶段5 t% @4 t3 @6 {; a7 V

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

二、借助make来编译

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

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

hello:hello.c
$ b4 l: t; q( Y- ^) }        gcc hello.c -o hello+ J2 I- z7 @  {- ~3 R% C- w

编译运行:

微信图片_20200918103856.png

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

微信图片_20200918103859.png

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

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

【Linux笔记】make工程管理工具(二)
- }5 e' @# o" _" n6 W0 |5 ?& F% v

三、借助CMake生成Makefile

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

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

1、命令行操作

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

sudo apt install cmake6 j1 S! k7 z0 T8 P3 F, a; L% Z( X
微信图片_20200918103902.png

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

微信图片_20200918103905.png

输入如下内容:

cmake_minimum_required (VERSION 3.10.2), M* m! b4 E  l& Q' z
project (cmake_test)2 \" q1 d5 F9 `7 Y, i# `
add_executable(cmake_test hello.c)

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

mkdir build  # 创建build文件夹
/ I# z( p5 e2 ?9 T! Dcd build     # 进入build文件夹/ k) c* o. W$ R3 r
cmake ../    # 在cmake_test文件夹下生成Makefile6 K* B7 K- Z$ b) N9 I

执行结果如下:

微信图片_20200918103908.png

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

2、使用cmake-gui

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

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

微信图片_20200918103912.png

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

sudo apt install cmake-qt-gui5 x3 T, I8 d# [) n

如:

微信图片_20200918103914.png

启动cmake-gui:

微信图片_20200918103918.png
微信图片_20200918103921.png
微信图片_20200918104051.png

查看cmake-gui_test文件夹:

微信图片_20200918104054.png

编译运行:

微信图片_20200918104057.png

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

0 k, H6 I. o2 H9 E& P* l$ E3 p
赞 收藏 评论0 发布时间:2020-9-18 10:43

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版