+1 для каждой части информации, которая помогает завершить всю картину. Вам не нужно знать весь ответ. Я по достоинству оценю отдельные части головоломки. Спасибо.
Я собираюсь попробовать свою первую кросс-компиляцию. Я искал как SO, так и сеть и нашел много информации, но я не всегда знаю, как собрать эти штуки, потому что все еще есть некоторые недостающие части.
Мой хост: linux Kubuntu amd64.
Цель: linux kubuntu x86 (32bit) (должно быть легко, нет?)
Инструменты: g++ и cmake.
Вот информация, которую я нашел:
Как скомпилировать 32-битный двоичный файл на 64-битной Linux-машине с gcc/cmake
упоминает экспорт CFLAGS = -m32. Это одна часть.
Кросс-платформенная: выбор типов данных для использования 32/64 бит
упоминает типы данных. Возможно, мне придется обратить внимание на это в моем коде.
#ifdef для 32-разрядной платформы
#ifdef для 32-разрядной платформы
ссылки на следующее, хотя я еще не уверен, как его использовать:
http://predef.sourceforge.net/prearch.html
http://ww.ubuntuforums.org/showthread.php?t=1377396
Я сделал: sudo apt-get install g++ - multilib
недостающие части:
В идеале, когда я делаю "make" (с cmake), он должен выплюнуть как двоичный файл amd64, так и x86.
Часть моего CMakeLists.txt выглядит так:
add_definitions(-Wall -pthread)
add_executable (../run.amd64 user.cpp time.cpp init.cpp utils.cpp main.cpp)
target_link_libraries(../run.amd64 cppcms dbixx config++ ctemplate)
Как мне добавить флаг -m32 для создания второго исполняемого файла?
Должен ли я сделать только один исполняемый файл (например, для тестирования и отладки), как сообщить cmake для создания одного или обоих двоичных файлов?
Кроме того, вы можете видеть, что я использую некоторые сторонние библиотеки, некоторые из которых мне пришлось скомпилировать. Означает ли это, что мне нужно скомпилировать каждый из этих двоичных файлов для целевого хоста? Некоторые используют cmake, а некоторые используют:./configure; сделать;
Как мне сделать компиляцию этих библиотек для целевого хоста (флаги для использования и т.д.)?
Примечание: динамически связанные библиотеки уже скомпилированы и установлены на целевом компьютере, поэтому, возможно, мне не нужно беспокоиться об этом шаге... Я не уверен: это одна из моих недостающих частей...
Мне нужен учебник или, по крайней мере, некоторые недостающие части. Я обновлю это сообщение с более подробной информацией о том, что я достиг и как.
Спасибо.
P.S.
Возможно ли вообще?
Поиск больше, я нашел это:
http://www.mail-archive.com/[email protected]/msg26265.html
"Оригинальный дизайн, похоже, не предназначен для чего-то большего, чем перекрестные компиляции windows-linux или linux-windows".
cmake НЕ тестируется на linux amd64 до linux x86.
http://www.cmake.org/Wiki/CMake_Cross_Compiling#FAQ.2FPotential_Problems
"В смешанных 32/64 бит установках Linux кросс-компиляция не может использоваться для сборки только для 32/64 бит".
??