Io не компилируется в Mac OS X Snow Leopard - PullRequest
1 голос
/ 08 октября 2010

Я следовал инструкциям в README, они очень просты

cd build
cmake ..
make install

Проблема возникает после команды make install.Io не будет компилироваться, в частности, из-за модуля CFFI.ld жалуется, что мой libffi.dylib не является 64-битным, и поэтому он не будет связывать файлы .o, и поэтому жалуется, что тот или иной символ не определен и т. д.

ld: warning: in /opt/local/lib/libffi.dylib, file was built for i386 which is not the architecture being linked (x86_64)

Как я могу решить это?Есть ли способ компилировать Io в 32-битной версии, передавая параметры make, cmake или редактируя какой-либо файл?В Makefile есть запись для аддона CFFI.Могу ли я просто удалить его?где я могу получить 64-битный libcffi?эта библиотека предоставляет API для доступа к вызовам функций более низкого уровня для языков более высокого уровня, поэтому я не уверен в том, что заменить 32-разрядную версию на 64-разрядную, это может привести к поломке моего MacRuby или других вещей.я хотел бы иметь возможность построить его с CFFI и всеми возможными аддонами, которые могут работать в моей системе, чтобы иметь возможность делать больше вещей: меня интересуют привязки target-c, которые, как мне кажется, могут потребовать cffi.

1 Ответ

1 голос
/ 23 февраля 2011

На Mac вы можете скомпилировать 32-битную версию, только установив CMAKE_OSX_ARCHITECTURES = i386 в кеш CMake.

Запустите "cmake-gui". в дереве сборки, а затем измените CMAKE_OSX_ARCHITECTURES на i386. Затем сделайте чистую сборку. На этом этапе вы должны получить 32-разрядные двоичные файлы.

В других ОС (Linux, Windows) существуют разные методы получения 32-разрядных сборок на 64-разрядных системах. Они включают либо передачу определенных флагов компилятору (-m32 -m64 для gcc), либо использование надлежащего генератора CMake (Visual Studio 9 2008 против Visual Studio 9 2008 Win64).

...