我想为我为Linux已有的Makefile项目创建macOS二进制文件。
原来的Linux项目链接是针对elf32静态库的,所以我想我可以利用objconv进行这种转换。
我打电话给:
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提供一些额外的指导,这样我就可以解决这个问题了?
谢谢!
发布于 2017-08-25 15:23:16
只有在非常简单的情况下,才能将对象或库文件从一个OS转换到另一个OS。因为您有原始源文件,所以应该在Mac下重新编译它们。
https://stackoverflow.com/questions/45862110
复制相似问题