其中用到的两个选项:-Wl,-Bstatic和-Wl,-Bdynamic。这两个选项是gcc的特殊选项,它会将选项的参数传递给链接器,作为链接器的选项。比如-Wl,-Bstatic告诉链接器使用-Bstatic选项,该选项是告诉链接器,对接下来的-l选项使用静态链接;-Wl,-Bdynamic就是告诉链接器对接下来的-l选项使用动态链接。
示例:
gcc foo.c -Wl,-Bstatic-lbar -lbaz -lqux -Wl,-Bdynamic-lcorge -o foo.exe
参考:
1. http://www.dutor.net/index.php/2011/12/mix-dynamic-and-static-linking/
2. http://stackoverflow.com/questions/2954387/can-i-mix-static-and-shared-object-libraries-when-linking
相关推荐
GCC编译动态和静态链接库.pdf 学习资料 复习资料 教学资源
转载的gcc编译方法,开发时老是忘记,作为资源吧,省得找了。
gcc编译动态和静态链接库.pdf,教你如何编译和使用库,提高程序的理解力
根据链接时期的不同,库又有静态库和动态库之分。 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 有别于静态库,动态...
介绍gcc下常用的一些参数,包括预编译、编译、汇编和链接,以及优化和调试。静态链接与动态链接的内容。绝对原创!!
用GCC编译器制作静态库和动态库的方法简介。
stm32代码在ubuntu linux使用gcc编译的链接文件 link.ld 具体参考博客: http://blog.csdn.net/embbnux/
默认编译是静态库,但考虑到 linux 上动态库使用较多,所以使用 -DBUILD_SHARED_LIBS=ON 参数编译为动态库。 在 centos 7 下使用 gcc 4.8.5 + cmake 3.16.9 编译,包含 bin, include, lib, lib64, share 五个目录,...
这是最常规的解决办法,除此之外,只需要加入--start-group和--end-group两个链接参数,即可保持被依赖的库放在前头,也就是改成如下即可:g++ -g -o $@ -Wl,--start-group $^ -Wl,--end-group。 这里的“-Wl,”...
源码经过编译生成对象文件,对象文件进一步处理可以生成可执行程序或者库文件。...对于可执行程序和动态库,此“进一步处理”指的是“链接”,使用gcc命令。 对于静态库,此“进一步处理”指的是“打包”,使用ar命令。
话说ISOC99有自己的一系列标准C函数库,例如我们熟悉的libc.a(包含标准I/O函数、字符串操作函数和整数数学函数)和libm.a(浮点数数学函数),可供我们在使用gcc编译工具编译程序时调用。那么,如果我们在日常学习...
在阅读本文之前,小编先给大家介绍一篇相关文章:Linux静态链接库使用类模板的快速排序算法 大家首先看下以上的文章对理解下面的知识点会有很大的帮助。 当模板遇到静态链接库会发生什么呢。 我们先按照常规思路去...
公司的入门培训,如何使用gcc如何进行编译,交叉编译
1.熟悉各种Linux操作命令;并编写程序,使用GNU gcc/g++进行...3)分别用静态链接和共享链接的方式测试向量的使用。 3.创建包含二维向量和三维向量的向量库:libVector.a和 libVector.so,并分别写出对应的MakeFile文件
使用方法:包含编译器相关头文件、wx头文件、指定__WXMSW__、_UNICODE、NDEBUG(发行版专用)、WSUSINGDLL(动态库专用)这几个宏,指定-finput-chaaset=GBK(系统的编码),指定链接库,使用TDMGCC编译GBK(系统...
预处理 编译 汇编 链接 下面逐个使用 预编译:宏替换 ,文件引入 ,去除空行,注释,为编译做准备 预编译命令: gcc -E test.c -o test.i test.c中内容 #include int main(){ printf(“hello world!\n”); return 0; } -E...
在我们使用 gcc 的 Unix 下,我们可以将标志--whole-archive传递给链接器 ld,这使得 ld 不会丢弃任何对象。 在 Windows Visual Studio 下,没有等效于 GNU ld 的选项 --whole-archive。 链接器选项/ OPT:NOREF也...
1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include test.h int main(){ test(); return 0; } // test.h #include using namespace std; void test(); // test.c #include test.h void test...
第八章 制作自己的静态链接库 第九章 制作自己的动态链接库 第十章 使用自己的动态链接库 第十一章 在Dev-Cpp中创建自己的工程 第十二章 在Dev-Cpp中生成自己的包 第十三章 Dev-Cpp包制作补完篇 第十四章 wxWidget的...