- 配置终端的C开发环境
在linux 下一般使用gcc 编译C 语言代码,gcc 可以通过管理工具进行安装,以Ubuntu 16.04为例
sudo apt-get install gcc
【总结配置Linux C 的终端环境】新建一个C 语言程序进行编译演练,可以使用vim, 或者是touch命令来创建一个文件 。vim test.c / touch test.c
#include <stdio.h>int main( ){printf("study gccn");return 0;}
代码编辑完成后,使用gcc 命令进行编译$ lstest.c$ gcc -o test test.c
-o 参数指定可执行程序名,test.c 是源码文件,当编译完成后,当前目录下会出现一个可执行文件test$ lstesttest.c
在命令行下,将可执行程序运行起来,看是否会输出预期的内容:$ ./teststudy gcc
- 多文件编译
以C语言为例,将test.c 拆解成两个文件,创建test2.c
touch test2.c
#include <strdio.h> void print_test( ){printf("study gccn");}
test2.c 中定义一个函数,函数名为print_test, 用于输出 "study gcc".在test.c中直接调用print_test 即可:
test.c
void print_test( );int main( ){print_test();return 0;}
按照以下步骤,编译由两个文件组成的程序:gcc -o test test.c test2.c
- 解析编译流程
我们可以分阶段编译test.c, test2.c,源文件如下:
$ lstest.ctest2.c
编译test2.c文件, 生成test2.o 对象文件:$ gcc -c test2.c$ lstest2.ctest2.otest.c
编译test.c文件,生成test.o 对象文件:$ gcc -c test.c$ lstest2.ctest2.otest.ctest.o
最后链接两个对象文件,生成可执行程序:$ gcc -o test test.o test2.o$ ./teststduy gcc
- 关于分阶段编译
在上面的例子中,test.c 有变更,而test2.c 没有变更,那么,我们只需要编译test.c 生成新的test.o 对象文件,最后再跟test2.o 文件链接生成新的可执行文件test 。
可以省去编译test2.c 这段时间,如果文件较多,节省的编译时间就会很长 。
- 使用Makefile 自动编译
.DEFAULT_GOAL := runtest2.o: test2.cgcc -o test2.o -c test2.ctest.o: test.cgcc -o test.o -c test.ctest: test2.o test.ogcc -o test test2.o test.orun: test./testclean:rm -f *.orm -f test$ lsMakefiletest2.ctest.c$ makegcc -o test2.o -c test2.cgcc -o test.o -c test.cgcc -o test test2.o test.o./teststduy gcc
执行make 命令$ lsMakefiletest2.ctest.c$ makegcc -o test2.o -c test2.cgcc -o test.o -c test.cgcc -o test test2.o test.o./teststduy gcc
Makefile 大致可以理解成 目标 、 依赖 以及 构建指令。缺省情况下,Makefile定义的第一个目标为默认目标,在第一行显式定义了默认目标,由于没有变更,再次构建时自动省略编译环节 。
$ make./teststudy gcc
定义用于清理编译结果的目标 ==》 clean:$ lsMakefiletesttest2.ctest2.otest.ctest.o$ make cleanrm -f *.orm -f test$ lsMakefiletest2.ctest.c
清理编译结果,在进行全新编译时很方便 。推荐阅读
- 彻底理解Linux 进程调度所有知识点
- Java开发环境搭建与配置,最全手册看这一篇就够了
- 黑客如何搭建和使用VMware和Kali Linux使用环境?
- Kali Linux,一个你欲罢不能的东西,非专业勿入
- 常见 Web 安全攻防总结
- Nginx配置知识点梳理
- Linux 命令总结
- 50个应知必会的Linux常识和操作
- 想MYSQL数据库运维高效,这些开发规范总结,参考着用
- 详细解析Linux /etc/passwd文件