В настоящее время я пытаюсь скомпилировать программу на Mac OS X (10.9) с использованием библиотеки, первоначально скомпилированной для Linux.
Есть ли способ использовать эту библиотеку? Вот вывод 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
Вы не можете связывать объекты ELF (или архивы или разделяемые библиотеки) с Mach-O. Вы можете попробовать использовать утилиту Agner Fog objconv, чтобы преобразовать x86-64 ELF в x86-64 Mach-O, которые используют те же (ELF) вызовы. Я бы не рекомендовал этот подход, если вы можете скомпилировать его из источника.
Linux использует библиотечный формат ELF. Mac не использует ELF (вместо этого Mac использует формат Mach-O), поэтому я подозреваю, что это будет очень сложно (если вообще невозможно). Возможно, вы сможете сделать бинарную совместимость Linux с FreeBSD.
mylib
для OS X?