大佬教程收集整理的这篇文章主要介绍了在C中创建一个多架构静态库,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
但是生成的.a包只能在编译它的机器上运行.
我知道.a存档包含目标文件(在我的情况下只有一个),因此,我可以将在不同机器(i386和amd64)中编译的目标文件打包在一起,以便GCC能够知道应该使用哪个文件吗?
如果我不能,至少可以让我的图书馆被其他相同的机器识别?
(使用-l.-llibraryName)
存档名称“libvisualt64.a”
命令:gcc -o main main.c -l. -lvisualt64
说:
skipping incompatible ./libvisualt.a when searching for -lvisualt64 cAnnot find -lvisualt64 error: ld returned 1 exit status
在同一架构的另一台机器上使用您的库应该没有问题.唯一可能的问题可能与依赖关系有关.
如果你真的想要一个二进制文件来支持多种架构,那么你可能会对FatELF感兴趣…虽然它不支持without a kernel patch:
为了解决您的编辑问题,您的libvisualt64.a可能不是针对gcc所针对的相同架构而构建的……
您需要从存档中提取目标文件,并将它们与gcc的目标进行比较:
ar xv ${STATIC_LIBRARY} file *.o gcc -v 2>&1 | grep '^Target: '
我看到以下(兼容)输出:
test.o: ELF 64-bit LSB relocatable,x86-64,version 1 (SYSV),not Stripped Target: x86_64-linux-gnu
以上是大佬教程为你收集整理的在C中创建一个多架构静态库全部内容,希望文章能够帮你解决在C中创建一个多架构静态库所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。