gcc使用-Wl传递连接器参数,ld使用-Bdynamic强制连接动态库,-Bstatic强制连接静态库。所以部分静态,部分动态连接这么写: gcc ... -Wl,-Bstatic -l<your-static-lib> -Wl,-Bdynamic -l<your-dynamic-lib> ... 举个例子,你想静态连接libA.a同时动态连接libB.so,(先保证你的连接路径-L里面能找到对应的静...
g++ -L. -o main main.cc -Wl,-Bstatic -ltest -Wl,-Bdynamic 前面的 -Wl,-Bstatic指示链接libtest.a静态库,后面的 -Wl,-Bdynamic指示链接系统动态库。
libX2.a libX1.a -Wl,--end-group) 2. Bstatic编译选项 用"-Wl,-Bstatic"指定链接静态库,使用"-Wl,-Bdynamic"指定链接共享库,使用示例: -Wl,-Bstatic-lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic-lrt -Wl,-Bdynamic-pthread -Wl,-Bstatic-lgtest 3. whole-archive编译选项 默认情况下,对于...
目标程序与静态库链接时,目标程序代码调用的任何外部函数的代码都会从静态库中复制到最终的可执行文件中。 GCC在链接时优先使用动态库,只有当动态库不存在时才开始使用静态库,如果要强制使用静态库,编译时加上-static参数。 使用-Wl,-Bstatic告诉链接器优先使用静态库。 动态库: 不包含在目标程序中,但是与目标程序...
其中用到的两个选项:-Wl,-Bstatic和-Wl,-Bdynamic。这两个选项是gcc的特殊选项,它会将选项的参数传递给链接器,作为链接器的选项。 比如-Wl,-Bstatic告诉链接器使用-Bstatic选项,该选项是告诉链接器,对接下来的-l选项使用静态链接; -Wl,-Bdynamic就是告诉链接器对接下来的-l选项使用动态链接。下面是man gcc...
使用-Wl,-Bstatic 告诉链接器优先使用静态库。 动态库: 不包含在目标程序中,但是与目标程序相关联。 创建动态库的时候,可以传-shared 和-fPIC 参数,-fPIC 参数用于编译阶段,用来生成位置无关的代码。使用“gcc -shared -fPIC”可以直接用 xxx.c 源文件生成 xxx.so 动态库。
-Wl 选项后跟一个以逗号分隔的 linker 选项列表,而其他 gcc 选项则需要以空格分隔的选项列表。 gcc 使用的 ld linker 提供了选项 -Bstatic 和-Bdynamic 以指定此选项后的库是否应静态链接或动态链接。将 -Bstatic 和库传递给 linker 后,必须手...
使用-Wl,-Bstatic告诉链接器优先使用静态库。 动态库: 不包含在目标程序中,但是与目标程序相关联。 创建动态库的时候,可以传-shared和-fPIC参数,-fPIC参数用于编译阶段,用来生成位置无关的代码。使用“gcc -shared -fPIC”可以直接用xxx.c源文件生成xxx.so动态库。
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/G++链接时优先链接动态库,如果没有动态库,则链接相应的静态库。同时,GCC/G++也提供了链接选项 -Wl,-Bstatic 和 -Wl,-Bdynamic 供用户指定链接动态库或者静态库。 -Wl,-Bstatic指示跟在后面的-lxxx选项链接的都是静态库,-Wl,-Bdynamic指示跟在后面的-lxxx选项链接的都是动态库。