Eli*_*ght 50 c linux shared-libraries static-libraries
我有一个第三方库,主要包含大量的static(.a)库文件.我可以将它编译成单个.a库文件,但我真的需要它作为单个.so共享库文件.
有没有办法将静态.a文件转换为共享.so文件?或者更一般地说,有一种很好的方法可以将大量静态.a文件与一些.o目标文件合并到一个.so文件中?
dic*_*oce 42
这个(当然是适当的-L)
gcc -shared -o megalib.so foo.o bar.o -la_static_lib -lb_static_lib
Run Code Online (Sandbox Code Playgroud)
不行吗?
vit*_*.ch 24
如果静态库中的对象是在没有-fPIC或类似的情况下编译的,则无法执行此操作.
小智 17
g++ -shared -o megalib.so foo.o bar.o -Wl,--whole-archive -la_static_lib -lb_static_lib -Wl,--no-whole-archive -lc_static_lib -lother_shared_object
Run Code Online (Sandbox Code Playgroud)
我不确定gcc,但对于g ++,我必须添加--whole-archive链接器选项,以包含共享对象中静态库中的对象.如果要链接到libc_static_lib.a和libother_shared_object.so,则必须使用--no-whole-archive选项,但不要在megalib.so中将它们作为一个整体包含在内.
ar -x如果您想专注于.as中的特定对象并且不想自己添加任何内容,它也很有用。
例子:
ar -x lib***.a
gcc -shared *.o -o lib***.so
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48861 次 |
| 最近记录: |