编译选项

本文详细介绍了GCC编译器的各种选项,包括总体选项(如-c, -S, -E, -o)、警告选项(-Wall)、调试选项(-g)、优化选项(-O0, -O1, -O2, -O3)以及链接选项(-l, -nostartfiles, -nostdlib, -static, -shared等)。此外,还提到了目录选项(-I, -L, -B)用于指定头文件和库文件的搜索路径。" 77941326,5839520,RHEL5系统与Linux服务器知识详解,"['Linux系统管理', '网络路由', 'C++编程', '操作系统', '编程错误']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.总体选项
(1)-c
预处理,编译和汇编源文件,但是不作链接,编译其根据源文件生成OBJ文件。默认情况下,GCC通过用“.o”替换源文件名的后缀“.c”,”.i”,”.s”等。可以使用“-o”选项选择其他名字。GCC忽略“-c”选项后面任何无法识别的输入的文件。
(2)-S
编译后即停止,不进行汇编。对于每个输入的非汇编语言文件,输出的结果是汇编语言文件。默认情况下,GCC通过用“.s”替换源文件后缀名,产生汇编文件名,可以使用“-o”选项选择其他名字,GCC忽略任何不需要汇编的输入文件。
(3)-E
预处理后即停止,不进行编译。预处理后的代码送往标准输出。GCC忽略任何不需要预处理的文件。
(4)-o file
指定输出文件为file。无论是预处理,编译,汇编还是链接,这个选项都可以使用。如果没有使用“-o”选项,默认的输出结果是:可执行文件为“a.out”
2.警告选项
“-Wall”选项基本打开了所有需要注意的警告信息。
3.调试选项
-g:以操作系统的本地格式(stabs,COFF, XCOFF或DWARF)产生调试信息,GDB能够使用这些调试信息。在大多数使用stabs格式的虚脱上,“-g”选项加入只有GDB才使用额外的调试信息,
4.优化选项
(1)-O或-O1
优化
(2)-O2
多优化一些
(3)-O3
优化更多
(4)-O0
不优化
5.链接其选项
(1)object-file-name
如果某些文件没有特别明确的后缀,GCC就认为他们是OBJ文件或库文件(根据文件内容,链接其能够区分OBJ文件和库文件)。如果GCC执行链接操作,这些OBJ 文件将成为链接其的输入文件
(2)-llibrary
链接名为library的库文件。
链接其在标准搜索目录中寻找这个库文件,库文件的真正名字是liblibrary.a 搜索目录除了一些系统标准目录外,还包括用户以“-L”选项指定的路径。一般说来用这个方法找到的文件是库文件——即由OBJ文件组成的归档文件(archive file)。链接其处理归档文件的方法是:扫描归档文件,寻找某些成员,这些成员的符号目前已被引用,不过还没有被定义。但是,如果链接器找到普通的OBJ文件,而不算库文件,就是这个OBJ文件按平常方式链接进来。指定“-l”选项和指定文件名的唯一区别是。“-l”选项用“lib”和“.a”把library包裹起来,而且搜索一些目录。
(3)-nostartfiles
不链接系统标准启动文件,而标准库文件仍然正常使用。在编译bootloader,内核时,将用到这个选项。
(4)-nostdlib
不链接系统标准启动文件和标准库文件,只把指定的文件传递个连接器。这个选项常用与编译内核,bootloader等程序,他们不需要启动文件,标准库文件。
(5)-static
在支持动态链接(dynaminc linking)的系统上阻止链接共享库
(6)-shared
生成一个共享OBJ文件,它可以和其他OBJ文件链接产生可执行文件
(7)-Xlinker option
把选项option传递给连接器,可以用来传递系统特定的链接选项
6.目录选项(Directory Option)
(1)-Idir
在头文件的搜索路径列表中添加dir目录
头文件的搜索方法为,如果以“#include”保护的文件,则先从用户的工作目录开始搜索,再搜索标准库目录。
(2)-I-
任何在“-I-”前面用“-I”选项指定的搜索路径只适用与“#include“file””这种情况只能用来搜索“#include”包含的头文件。如果用“-I”选项指定的搜索路径位置
(3)-Ldir
在“-I”选项的搜索路径列表中添加dir目录
(4)-Bprefix
这个选项指出在何处寻找可执行文件,库文件,以及编译器自己的数据文件。

arm-linux-ld选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值