我目前正在尝试使用最初为Linux编译的库在Mac OS X(10.9)上编译程序。
有没有办法使用这个库?以下是objdump -f libmylib.a
的输出:
Hour.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
Menu.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
Tools.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
我知道我当前的架构是x86_64-apple-darwin13.0.0
,我想知道是否有适当的编译器标志,有一种方法可以进行编译。
还有一件事,这是尝试编译时的错误:
g++ -L /Users/gustavemonod/Desktop/ -o Parking Mother.o Keyboard.o -lncurses -ltcl -lmylib
ld: warning: ignoring file /Users/gustavemonod/lib/libmylib.a, file was built for archive which is not the architecture being linked (x86_64): /Users/gustavemonod/lib/libmylib.a
答案 0 :(得分:0)
Linux使用名为ELF的库格式。 Mac不使用ELF(相反,Mac使用一种名为Mach-O的格式),所以我怀疑这将是非常困难的(如果不是实际上不可能)。 可能能够使FreeBSD的Linux Binary Compatibility工作。
答案 1 :(得分:0)
您无法将ELF对象(或归档或共享库)与Mach-O链接。您可以尝试使用Agner Fog的objconv实用程序将x86-64 ELF转换为x86-64 Mach-O,它们使用相同的(ELF)调用约定。如果您可以从源代码编译,我不推荐这种方法。