我有一个lib(* .a)文件,用elf格式的armcc创建。用llvm或gcc重新编译它是不可能的。 (这是为armcc编写的汇编程序)。
将它与gnu ld链接在Linux上运行正常,但我在使用llvm在Mac上执行此操作时遇到问题。
由于obj文件的内部格式不同,它会说“忽略文件......这不是被链接的体系结构”
有解决方法吗?一种将elf转换为Mach-O格式的方法?告诉llvm关于精灵?
由Agner Fog编写的x86 / 86-64有tool,但我正在寻找ARM工具。
答案 0 :(得分:3)
binutils中有一个objcopy,它应该将二进制文件从一种格式转换为另一种格式。我想,您应该使用Linux和iOS BFD编译binutils。不幸的是,binutils对Mach-O的支持不完整(有一些关于ARM + objcopy + Mach-O的负面报道)。
另见:
其他转换方式是重新组装(从.a存档中反汇编每个.o文件,并使用与Mach-O兼容的汇编程序重组它)。