将多个 .so 和 .a 文件链接后创建 .so 文件

3

我需要通过将它链接到其他开源库(一些可用作.so和一些可用作.a)来创建一个.so

通过将.so.a的组合链接,是否有可能创建一个.so

例如,假设我正在尝试通过将其与liba.solibb.a链接来创建libfinal.so

gcc -shared -Wl,-soname,libfinal.so -Wl,--no-undefined -la -lb

上述命令试图找到不可用的libb.so。有解决方案吗?
更新:问题似乎是libb.a没有使用-fPIC选项编译。 错误--->在制作共享对象时,无法使用关于“libipt_DNAT_init”的重定位R_MIPS_26;请重新编译并加上-fPIC。

据我所知,对象文件(以及其归档文件)必须在没有选项的情况下列出。即尝试:gcc -shared -Wl,-soname,libfinal.so -Wl,--no-undefined -la b - Quentin
明确地使用完整的路径和文件名? - Some programmer dude
添加完整路径会导致以下错误:无法读取符号:值错误 - Anup Patil
@AnupPatil,关于我上面的修改,你有什么看法? - Quentin
@AnupPatil 因为我忘记了一半的内容 :D gcc -shared -Wl,-soname,libfinal.so -Wl,--no-undefined -la libb.a 应该可以工作,正如Shubhangi在下面的回答中所述。 - Quentin
显示剩余2条评论
1个回答

0


Below is command syntax to link object files , archives and libraries.

gcc -o <output file> -l<library> objectfiles|archives

E.g. Linking libc.so.6, Ex.o and binary1.a to generate MyEx.so

gcc -o MyEx.so -lc Ex.o binary1.a

Note : An archive (.a) is nothing but a single file holding a collection of other files


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接