GCC命令的选项非常多,可以根据不同的需求进行选择,下面将对GCC命令的选项进行简述。 1. 常用选项 (1)-c:只编译不链接,生成目标文件。 (2)-o:指定输出文件名。 (3)-g:生成调试信息。 (4)-Wall:开启所有警告信息。 (5)-Werror:将警告信息视为错误。 (6)-O:优化选项,包括-O0、-O1、-O2、-O3等级别...
-nostartfiles:不连接系统标准启动文件,但标准库文件仍然使用 -nostdlib:不连接系统标准启动文件和标准库文件 以上两个选项主要用于编译bootloader、内核。bootloader和内核也都是软件,只不过所有事情都得自己搞定。 -static:不进行动态链接。加上这个选项后,编译出的应用程序的size非常的大 -shared:生成一个静态库文件,...
gcc -Wa,option[,option[...]]: 传递选项到汇编器的命令行。 gcc -Wall: 对于源代码内各式各样的问题输出警告。 gcc -Wl,option[,option[...]]: 将选项传递到连接器的命令行。 gcc -Werror: 任何警告都是为错误。 gcc -Wextra: 对于合法但”值得怀疑“的用法,提出警告。 gcc -x filetype: 把后续的...
(1)-Wall 这个选项基本打开了所有需要注意的警告信息,比如没有指定类型的声明、在声明之前就使用的函数、局部变量除了声明就没再使用等。 上面的 main.c 文件中,第 6 行定义的变量 i 没有被使用,但是使用“gcc –c –o main.o main.c”进行编译时并没有出现提示。 可以加上-Wall 选项,例子如下: $ gcc ...
gcc -nostdlib: 不链接标准链接库。 gcc -o file: 直接输出到指定文件。 gcc -O0: 关闭所有优化选项。 gcc -O[1]: 进行某些”不太花费CPU时间“的优化。 gcc -O2: 进行更多的优化,包括数据流分析。 gcc -O3: 进行更多更多的优化,包括inline函数的编译。
$ gcc -v -nostdlib -o test main.o sub.o 1. 输出的信息如下: AI检测代码解析 /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/collect2 --eh-frame-hdr -m elf_i386 -dynamiclinker /lib/ld-linux.so.2 -o test -L/usr/lib/gcc-lib/i386-redhat-linux/3.2.2 ...
注意,某些gcc编译器会把math库视为标准库进行自动链接。 这时我们需要加上-nostdlib参数,使其不自动链接标准库,才会报出如上的Undefined错误。 初看-lm参数,可能会感觉有些诡异。 那么,-l参数具体是如何使用的呢?-l参数后需要接库名(如m),而不是库文件名(如libm.so)。 但库名和库文件名之间,存在非常直观...
另外GCC对硬件平台的支持,可以所无所不在,它不仅支持X86处理器架构, 还支持ARM, Motorola 68000, ...
连接器选项 (LINKER OPTION) :(-llibrary -nostartfiles -nostdlib -static -shared -symbolic -Xlinker option -Wl,option -u symbol ) 目录选项 (DIRECTORY OPTION) :(-Bprefix -Idir -I- -Ldir) 警告选项 (WARNING OPTION) :(-w 不生成所有警告信息,-Wall 生成所有警告信息) ...
-nostdlib 链接时不使用标准系统启动文件和库。 -nostartfiles 不链接标准系统启动文件。只要不用-nostdlib或者-nodefaultlibs选项,标准系统库文件正常使用。 -s 去除可执行文件中所有的符号表和重定位信息。 -static 在支持动态链接的系统上,该选项禁止链接动态库。在其他系统上该选项无效。 -shared 生成一个可以和...