gcc为我们提供了(-static)、(-Wl,-Bstatic)、(-Wl,-Bdynamic),这么几个选项。 第一种用法:使用-static选项,将全部动态库都用静态库替换。 这里有个基于boost库的程序,我们使用普通动态链接的方式编译出来,看看可执行程序的依赖关系。 由上图可见,可执行程序依赖于libboost_thread.so.1.72.0、libpthread.so.0...
-static-libstdc++: 如果没有这个选项,则默认使用libstdc++共享库,而这个选项可以指定使用libstdc++静态库 -Wa,option: 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序 -Wl,option: 此选项传递option给链接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会...
gcc –static a.c -Wl,-Bstatic -lm -Wl,-Bdynamic -lc 其中用到的两个选项:-Wl,-Bstatic和-Wl,-Bdynamic。这两个选项是gcc的特殊选项,它会将选项的参数传递给链接器,作为 链接器的选项。比如-Wl,-Bstatic告诉链接器使用-Bstatic选项,该选项是告诉链接器,对接下来的-l选项使用静态链 接;-Wl,-Bdyna...
8) -L dir :在库文件的搜索路径列表中添加dir目录 9) -static :连接静态库(静态库也可以用动态库链接方式链接) 10) -llibrary :连接名为library的库文件(显示指定需要链接的动态库文件) 2、gcc告警和出错选项 1) -ansi :支持符合ANSI标准的C程序 2) -pedantic :允许发出ANSI C标准所列出的全部警告信息 3...
static inline void test_func(int a, int b) { printf("%d, %d\n", a, b); } int main(void) { printf("hello rt-thread\n"); test_func(1, 2); return 0; } 特此说明下,我使用的交叉编译链是:gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc ...
默认情况下,gcc采用动态连接的方式连接第三方库,比如指定-lpng,连接程序就会去找libpng.so。 gcc提供了一个-static参数,可以改变gcc默认的连接方式,GNU官网上关于gcc连接选项的手册《3.14 Options for Linking》中有说明:如下 这个-static选项是个大杀器,指定了这个选项,gcc在连接时对项目所有的依赖库都尝试去搜索名...
GCC支持在编译的时候使用-std选项来选择编译语言的标准。程序本身也是在发展的,不断变化的。以 C 语言...
'-fno-inline' 忽略代码中的 inline 关键字,该选项使编译器将内联函数以普通函数对待;等同无优化选项时的处理'-finline-functions' 编译器尝试将'简单'函数集成到调用代码处;如果所有对该函数的调用都被替换而集成在调用者代码中,而且该函数使用static声明了,则该函数就不再像平常那样被编译成汇编代码。具体什么方...
GCC编译选项 gcc 编译选项,自己翻译的.- - gcc 编译选项,自己翻译的. -o 设定输出文件名 -c 只编译,不连接. -E 只做预编译. -pipe 在多个编译过程之间使用管道. --version 显示版本. -static 静态连接. -ansi C 模式下支持所有 ISO C90 标准的 C 程序, C++ 模式下去除对 GNU C++ 扩展的支持(GNU扩...
默认情况下,GCC 在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static选项,强制使用静态链接库。例如,如果在home/justin/lib/ 目录下有链接时所需要的库文件libfoo.so 和libfoo.a ,为了让GCC 在链接时只用到静态链接库,可以使用下面的命令:...