Linux基本用法(六)程序开发

C程序编译

gcc可接收处理多种文件,包括归档文件(.a),C语言源文件(.c),C++源文件(.C,.cc,.cxx),汇编语言源文件(.s),预处理输出文件(.i),目标代码(.o)

gcc [option] filelist

-c:只编译,不链接成可执行文件。编译器只是由输入的.c等为后缀的源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-g:产生调试器gdb所必需的符号信息,要对源代码进行调试,就必须在编译程序时加入这个选项
-O[level]:对程序进行优化编译,链接,采用这个选项,整个源代码会在编译,链接过程中进行优化处理,这样产生的可执行文件的执行效率较高,但是,编译、链接的速度就相应地要慢一些。数字越大优化程度越高。
-o output_filename sourcename:确定输出文件的名称为output_filename,如果不用output_filename,默认输出文件为a.out
-pg:产生供代码剖析工具gprof使用的信息
-S:跳过汇编和链接阶段,保留编译产生的汇编代码(.s文件)
-v:产生尽可能多的输出信息
-w:忽略警告信息
-W:产生比默认模式更多的警告信息
-ansi:强制ANSI标准
-l libfile:链接库文件
-m typeName:根据CPU类型优化代码

需要编译的文件可以放在option前,也可放在option后

gcc f1 f2 ... fN -o outputfile

一般而言,文件数量多时,采取将各源文件编译为目标文件的操作先,然后再链接形成可执行文件,如:

gcc -c f1.c
gcc -c f2.c
...
gcc -c fN.c
​
#也可写成gcc -c f1.c f2.c ... fN.c
gcc f1.o f2.o ... fN.o outputfile

如此,当某个文件发生修改时,可只编译该文件,再将所有文件链接,节省时间。

使用程序库时,需要用-l命令链接,如链接math.h

gcc f1.c -lm -o outputfile

make:处理模块化c程序

make [options] [target] [Macro Definition]
​
-h 或 --help:输出帮助信息。
-d:输出大量调试信息
-n:只打印需要执行的命令而不执行,测试模式
-s:是一个用于静默执行Makefile的命令选项。它会在执行过程中不输出任何信息,包括命令的执行结果和错误信息。
-j 或 --jobs:指定并行执行的任务数,即同时编译的文件数。
-I 或 --include-dir:指定头文件的搜索路径。
-f 或 --file:指定使用的Makefile文件,可以多次使用来指定多个文件。在文件名不是makefile或Makefile时需要使用此参数。
-k 或 --keep-going:即使遇到错误,也继续执行后续的编译任务。
​

make语法规则:

目标文件列表:依赖文件列表

<Tab>命令列表

目标文件列表中文件之间用空格隔开,依赖文件列表亦然。命令列表用回车隔开用户命令,每条命令都需要以<Tab>命令起头

如果想要强制编译系统,可以在make命令前执行touch命令

编写的makefile文件中各命令的执行顺序由编译过程决定,与makefile中的书写顺序无关。

make支持宏替换,需在makefine顶端定义宏:

makefile
​
macro_name = text
​
或
define macro_name
text
endef

其中,macro_name是您为宏指定的名称,而text是宏所代表的文本片段或命令。引用宏时采用$(macro_name)

宏使用参考

$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值