我们再用-static编译这个程序,再看看可执行程序的依赖关系。 由上图可见,加入-static选项以后,链接器将动态库全部换成了静态库。 第二种用法:使用-Wl,-Bstatic,-Wl,-Bdynamic选项,将部分动态库设置为静态链接。 gcc使用-Wl将参数传递给连接器。链接器使用-Bdynamic强制连接动态库,-Bstatic强制连接静态库。所以部...
2.1 GCC/G++ 编译选项部分详解 2.1 GCC/G++ 编译选项 gcc 和 g++ 编译执行过程为4步:预处理、编译、汇编和链接。 预处理:编译器对源码中的头文件和预处理语句进行分析,生成以 .i为后缀的预处理文件(宏定义展开,头文件展开,条件编译,删除注释在这里并不会做任何语法的检查) 编译:将.i...
编译器的优化选项的 4 个级别,-O0 表示没有优化, -O1 为默认值,-O3 优化级别最高。对程序进行优化编译l链接,整个源代码会在编译、链接过程中进行优化处理,产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。 -static 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不...
"soft"选项:表明不使用FPU硬件,而是使用GCC的整数算术运算来模拟浮点运算。此选项为默认,因此一定要修改为softfp。 "softfp"选项:表明要使用FPU硬件来做浮点运算,只是,函数的参数传递到整数寄存器(r0-r3)中,然后再传递到FPU中。 "hard"选项:表明要使用FPU硬件来做浮点运算,并且,函数的参数直接传递到FPU的寄存器(s0...
GCC 编译器通常 gcc 命令的形式在终端(Shell)中使用,它有很多选项 常见的编译选项 : -E 只执行预处理 (expand : 展开宏) -c 编译或汇编源文件,不执行链接 (compile :编译) -S 完成编译但不执行汇编,产生汇编文件 (sourcecode :源代码) -o file指定输出的文件为file(output : 输出的目标文件) ...
gcc 编译 选项 汇总 常用编译选项 gccandg++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]...
这里用到另一个选项:-E-E:预处理之后就停下来 所以我执行gcc -E myfile.c 但是这样直接执行之后它会把预处理之后文件的内容直接显示到显示器上,这样不太好看。 所以我们也可以-o指定一下文件名,把它放到对应文件里 那对于预处理之后的文件,一般后缀为.i ...
盘点一下gcc有哪些常用选项 gcc有哪些常用选项,今天,就来给大家盘点一下。 -E表示预处理,处理所有以井号键开头的代码,常见的比如把头文件展开。 hello.c #includeint main() { printf("helloworld "); return 0; } 预处理: gcc -E hello.c -o hello.i...
尽管 gcc 编译器的 -Wall选项涵盖了绝大多数警告标记,依然有一些警告不能生成。为了生成它们,请使用 -Wextra选项。比如,下面的代码:#include <stdio.h>#include <stdlib.h>int main(){ int i=0; /* ... some code here ... */ if(i); return 1; return 0; } 我不小...
但是如果同时使用-Wextra 选项来进行编译:gcc -Wall -Wextra test.c -o test 会生成下面这样一个警告: test.c:In function‘main’:test.c:10:8:warning:suggest braces around empty body in an ‘if’ statement [-Wempty-body]if(i); 从上面的警告清楚的看到,-Wextra 选项从内部启用了-Wempty-body ...