配置终端的C开发环境
在Ubuntu终端系统中开发依赖于一些命令行工具,与Windows下使用IDE集成开发环境不同。
在Linux下,一般用gcc编译C语言代码,gcc可以通过管理工具安装,以Ubuntu 16.04为例。
sudo apt-get install gcc
为编译练习创建一个新的C语言程序。您可以使用vim或touch命令来创建文件。
vim test.c / touch test.c#include <stdio.h>int ***in(){ printf("study gcc\n"); return 0;}
代码编辑完成后,使用gcc命令编译它。
$ lstest.c$ gcc -o test test.c
o参数指定可执行程序的名称,test.c是源文件。当编译完成时,一个可执行文件测试将出现在当前目录中。
$ lstest test.c
在命令行中,运行可执行程序,查看它是否会输出预期的内容:
$ ./teststudy gcc多文件编译
通常,程序由多个文件组成。编译多个文件时,需要将所有源文件发送给编译器。
以C语言为例,将test.c反汇编成两个文件,创建test2.c。
触摸test2.c
#include <strdio.h> void print_test(){ printf("study gcc\n"); }
test2.c中定义了一个名为print_test的函数,用来输出“学习gcc & # 8221。
直接在test.c中调用print_test即可:
测试. c
void print_test();int ***in(){ print_test(); return 0;}
按照以下步骤编译一个包含两个文件的程序:
gcc -o test test.c test2.c解析编译流程
编译可以进一步分为编译和链接两个阶段。
我们可以分阶段编译test.c,test2.c。源文件如下所示:
$ lstest.c test2.c
编译test2.c文件以生成test2.o目标文件:
$ gcc -c test2.c$ lstest2.c test2.o test.c
编译test.c文件以生成test.o目标文件:
$ gcc -c test.c$ lstest2.c test2.o test.c test.o
最后,链接两个目标文件,生成一个可执行程序:
$ gcc -o test test.o test2.o$ ./teststduy gcc关于分阶段编译
分阶段编译最大的好处就是可以做部分编译= = >:只编译修改过的部分。
在上面的例子中,test.c发生了变化,但是test2.c没有变化。然后,我们只需要编译test.c生成一个新的test.o目标文件,最后与test2.o文件链接生成一个新的可执行文件test。
可以节省编译test2.c的时间如果文件比较多,节省下来的编译时间会很长。
使用Makefile 自动编译
触摸Makefile
.DEFAULT_GOAL := runtest2.o: test2.c gcc -o test2.o -c test2.ctest.o: test.c gcc -o test.o -c test.ctest: test2.o test.o gcc -o test test2.o test.orun: test ./testclean: rm -f *.o rm -f test $ lsMakefile test2.c test.c$ ***kegcc -o test2.o -c test2.cgcc -o test.o -c test.cgcc -o test test2.o test.o./teststduy gcc
执行***ke命令。
$ lsMakefile test2.c test.c$ ***kegcc -o test2.o -c test2.cgcc -o test.o -c test.cgcc -o test test2.o test.o./teststduy gcc
Makefile可以大致理解为目标、依赖和构建指令。
默认情况下,Makefile定义的第一个目标是默认目标,默认目标在第一行中显式定义。由于没有变化,重新构建时会自动省略编译过程。
$ ***ke./teststudy gcc
定义用于清理编译结果的目标= = Clean:
$ lsMakefile test test2.c test2.o test.c test.o$ ***ke cleanrm -f *.orm -f test$ lsMakefile test2.c test.c
本文来自长街旧人投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/526249.html