首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从macOs塞拉利昂上的elf32静态库获得的mach-o静态库的链接错误

从macOs塞拉利昂上的elf32静态库获得的mach-o静态库的链接错误
EN

Stack Overflow用户
提问于 2017-08-24 12:49:07
回答 1查看 161关注 0票数 1

我想为我为Linux已有的Makefile项目创建macOS二进制文件。

原来的Linux项目链接是针对elf32静态库的,所以我想我可以利用objconv进行这种转换。

我打电话给:

代码语言:javascript
复制
objconv -fmacho32 -nu lib_elf.a lib_macho.a

并获得以下输出:

警告1053:公共常量转换为公共: triple_des_software_global_tdes_standard警告1053:公共常量转换为公共: triple_des_software_global_mode警告1053:公共常量转换为公共: triple_des_software_global_key警告1053:公共常量转换为公共:公共常量转换为公共: sbox警告1053:公共常量转换为公共:_SM警告1053:公共常量转换为公共: bit_size警告1053:公共常量转换为公共:_local:_ucl_a_sm2vp256警告1053:公共常量转换为公共:_local_ucl_inv2_sm2vp256警告1053:公共常量转换为公共:公共常量转换为公共: signature_computation警告1053:公共常量转换为公共:_ucl_n_stored警告1053:公共常量转换为公共:_ucl_rsqr_stored警告1053:公共常量转换为公共:_ucl_r_stored警告1053:公共常量转换为公共: sm2fp192警告1053:公共常量转换为公共: m0警告1053:公共常量转换为公共: shadec_ctx警告1053:公共常量转换为公共: shasign_ctx警告1053:转换为公共的公共常量:转换为公共的公共常量: W32警告1053:公共常量转换为公共: H32警告1053:公共常量转换为公共: b32警告1053:公共常量转换为公共: c32警告1053:公共常量转换为公共: d32警告1053:公共常量转换为公共常量。:e32警告1053:公共常量转换为公共: f32警告1053:公共常量转换为公共: h32警告1053:公共常量转换为公共:工作缓冲区警告1053:公共常量转换为公共:_stack警告1053:公共常量转换为公共:_stack_index警告1053:公共常量转换为公共: hash_size警告1053:公共常量转换为公共: using_sha_hardwareInput库: lib_elf.a,格式: ELF,输出: lib_macho.a,格式: Mach-O小Endian 392调试节删除了147个异常节,删除了1922年符号名前导下划线的更改。

我想到现在应该还行吧?

当我试图链接到lib_macho.a时,我得到以下输出:

使gcc-4.0 -O3 -g0 -v -W -Wall -DWORD32 -m32 -i./include-i./include/ucl -L。-o ../bin/darwin/ca_sign_buildtest.o -m32 -v -l_macho无法理解使用内置规范的kern.osversion‘16.7.0’。目标:i 686-apple-darwin10 10,配置有:/var/tmp/gcc_40/gcc_40-5494~315/src/配置-禁用-检查-启用werror前缀=/usr-下颌=/share/man-启用-语言=c,objc,c++,程序-c++--程序-转换-名称=/^cg*$/s/$/-4.0/-with-gxx-include-dir=/include/c++/4.0.0-with-slibdir=/usr/lib- build =i 686-Apple-darwin10-with-c=Apple-具有-调音=泛型-主机=i686-Apple-darwin10-目标=i 686-Apple-darwin10线程模型: posix gcc版本4.0.1 (苹果公司构建5494)usr/bin/../libexec/gcc/i686-apple-darwin10/4.0.1/collect2 -dynamic -arch i386 -macosx_version_min 10.4 -weak_reference_mismatches非弱-o ./bin/-o/ca_sign_build -lcrt1.o -L.-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/gcc/i686-apple-darwin10/4.0.1 -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/gcc -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/gcc/i686-apple-darwin10/4.0.1/../../..O -l_macho -lgcc -lSystem ld : in ./lib_macho.a(ucl_sys.c.o),在__TEXT部分,__text reloc 2: R_ABS reloc,但在体系结构的目标地址没有绝对符号i386 collect2: ld返回了1个退出状态:* ca_sign_build错误1

我不能搜索任何有用的文本:

ld:在./lib_macho.a(ucl_sys.c.o)中,在__TEXT部分,__text reloc 2: R_ABS reloc,但在体系结构i386的目标地址没有绝对符号

所以我想知道有没有人能告诉我一些关于链接器错误的事情?

我试着用最新的gcc ( clang/llvm )(基于clang/llvm),gcc-4.2和antian-4.0,这是我用xcodelegacy.sh从xcode ..dmg中提取出来的,但我总是得到相同的错误。

我得到的错误是gcc版本的问题,还是需要向objconv提供一些额外的指导,这样我就可以解决这个问题了?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-08-25 15:23:16

只有在非常简单的情况下,才能将对象或库文件从一个OS转换到另一个OS。因为您有原始源文件,所以应该在Mac下重新编译它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45862110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档