linux c文件编译,Linux下如何编译C程序?

原标题:Linux下如何编译C程序?

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

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

hello.c示例代码:

# include

intmain( void)

{

printf( "Hello worldn");

return0;

}

编译:

gcc hello.c -o hello

edae1402ca3a363c2b9da5666505a530.png

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

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

编译运行:

3f0e884c05517fe190bc38e82861de0e.png

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

a1821c240ecd654addc912261ccc4716.png

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

三、借助CMake生成Makefile

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

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

1、命令行操作

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

sudo apt install cmake

92f9eb80350929a99082211e58248ead.png

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

87deb78141a5b44647991ac37294272a.png

输入如下内容:

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

执行结果如下:

567d17bd99d5a26d96c2b1fab6031440.png

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

2、使用cmake-gui

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

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

556172036ecb2fa3890aec775cbac1ec.png

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

sudo apt install cmake-qt-gui

如:

c7327db81b1eb962014c7049e19b96f5.png

启动 cmake-gui :

9b0a4e9f62cdb4f96e9dab1539d90475.png

2e7c53a05be7d511a26a0e08287f86c4.png

6fa40b0eeec1da2e3031e958cb1b8c47.png

查看cmake-gui_test文件夹:

ff673cfbb0d83e22f66288d4a0179e90.png

编译运行:

67d3473ec3668845efb4a6275914792c.png

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

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值