记录嵌入式 linux环境下的编译方式
测试之前确保你的 Ubuntu 机器上安装了Gcc和cmake
1. 编译有以下几种方式
在 Linux系统下,编译一个 .c文件可以有以下几种方式:
- 直接用 Gcc编译器编译为可执行文件
- 编写Makefile文件,使用make指令,进行编译
- 安装 Cmake,使用make指令编译
第一种方式在大型项目中,肯定是不实用的,而 Makefile 的语法个人觉得非常复杂,因此为了“投机取巧”,在这里总结一下 cmake 的方式
1.1 直接gcc指令编译
利用指令,编译为可执行文件
gcc main.c -o hello
1.2 写一个Makefile,然后用 make 指令编译
objects = main.o input.o calcu.o
main: $(objects)
 	gcc -o main $(objects)
.PHONY : clean
%.o : %.c
 	gcc -c $<
 clean:
     rm *.o
     rm main
1.3 写一个Cmakelist,然后用 make指令编译
【工程目录】
├── build
├── CMakeLists.txt
└── main.c
【cmakelist内容】
project(HELLO)
add_executable(hello ./main.c)
【编译】
cd build/
cmake ../
make
以上三种方式比较,明显是使用cmake工具更简单,最起码我个人是这么感觉的
2. Cmake、makefile、Cmakelist

2.1 make
make 指令是linux 自带的默认常用指令,make指令执行后会在目录中找到 makefile 文件,根据makefile文件中的定义来编译整个工程
但是 makefile 语法在不同的平台间是不一样的,譬如 Visual C++的 nmake、 linux 下的 GNU make、 Qt 的 qmake 等等, 这些 make 工具遵循着不同的规范和
 标准, 对应的 Makefile 文件其语法、 格式也不相同,
2.2 cmake
camke 允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程, 再根据具体的编译平台,生成本地化的 Makefile 和工程文件,最后执行 make 编译。
- cmake 工具是跨平台的,比如在linux 平台下写了 makefile ,可以直接编译;但是在qt上就是qmake了,然而不同的平台的makefile语法还不一样
- Cmakelist.txt 在不同的平台间语法是一样的
- cmake 工具通过解析 CMakeLists.txt 自动生成 Makefile
参考:【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4
 第三十二章 CMake入门与进阶
![[LEECODE每日一题]找出最具竞争力的子序列](https://img-blog.csdnimg.cn/direct/e04c5b747d3c4c7ca26437aee3374eb0.png)

















