fly*_*bin 13 c c++ gcc shared-libraries static-libraries
我有一堆静态库(*.a),我想构建一个共享库(*.so)来链接这些静态库(*.a).我怎么能用gcc/g ++这样做?
R..*_*R.. 18
您可以(只提取所有.o
文件并将它们链接起来-shared
制作.so
),但它是否有效以及它的工作原理取决于平台以及静态库是否编译为位置无关代码(PIC).在某些平台(例如x86_64)上,非PIC代码在共享库中无效且不起作用(实际上我认为链接器将拒绝生成.so
).在其他平台上,非PIC代码将在共享库中工作,但是库的内存中副本在使用它的不同程序之间不可共享,甚至不能在同一程序的不同实例之间共享,因此会导致巨大的内存膨胀.
我不明白为什么你不能只是将动态库的文件构建到.o文件并链接;
gcc -shared *.o -lstaticlib1 -lstaticlib2 -o mylib.so
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11040 次 |
最近记录: |