关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
面试官问Linux下如何编译C程序,如何回答?为你编译演示
[复制链接]
作者:
「selina」
版块:
›
嵌入式操作系统
›
linux
发布时间:
2020-11-28 06:55:36
862
0
返回列表
「selina」
当前离线
中级会员
中级会员, 积分 327, 距离下一级还需 173 积分
中级会员
中级会员, 积分 327, 距离下一级还需 173 积分
积分
327
发消息
楼主
电梯直达
「selina」
发表于 2020-11-28 06:55:36
|
只看该作者
|
倒序浏览
|
阅读模式
文章来源:嵌入式大杂烩
作者:ZhengNL
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.txt 与hello.c文件放入新创建的文件夹cmake-gui_test中:
在终端输入 cmake-gui 命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:
sudo apt install cmake-qt-gui
如:
启动cmake-gui:
查看cmake-gui_test文件夹:
编译运行:
以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,可以从原文渠道转发~
如果你也想成为程序员,想要快速掌握编程,这里为你分享一个学习基地!
里面有资深专业软件开发工程师,在线解答你的所有疑惑~
资料包含:编程入门、游戏编程、课程设计、黑客等。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
Btrfs文件系统入门|Linux中国
•
架构师网络安全实战教程全方位高级网络安全课程
•
【干货】从lsof开始,深入理解Linux虚拟文件系统!
•
独立主机网站转移操作方式
•
Linux操作系统应用试题
•
DBA常用Linux命令
•
LinuxPC登陆天河二号基础操作
•
欲学鸿蒙必先懂Linux:逐项分析Linux目录树的5类18项构成
•
618在某宝上花298买来的Linux全解笔记,感觉4年Linux都白学了
•
【工程师分享】精简Linux的源代码
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表