Я пытаюсь сделать кросс-компиляцию с icecc, без удачи. Прямо сейчас я пытаюсь скомпилировать для Windows в моей системе Linux, используя mingw, который отлично работает (даже с ccache), но я не могу получить icecc для правильного распределения компиляции.
К сожалению, документация IceCC довольно расплывчато Например, что должно «платформа» в ICECC_VERSION
быть установленным в? Есть ли действительные / распознанные значения?
В настоящее время я создал собственный архив цепочки инструментов, используя:
icecc --build-native
…и архив для моей установки Ubuntu MinGW, используя:
/usr/lib/icecc/icecc-create-env --gcc /usr/bin/x86_64-w64-mingw32-gcc-win32 /usr/bin/x86_64-w64-mingw32-g++-win32
Я называю архивные файлы x86_64-gcc-5.4.0.tar.gz
а также win64-mingw-5.3.1.tar.gz
соответственно.
мой ICECC_VERSION
есть (я просто случайно выбрал «win64» в качестве имени платформы):
export ICECC_VERSION=/path/to/x86_64-gcc-5.4.0.tar.gz,win64:/path/to/win64-mingw-5.3.1.tar.gz
…и в моем файле CMake toolchain у меня есть (как временное решение для испытания):
set(CMAKE_C_COMPILER icecc x86_64-w64-mingw32-gcc-win32)
set(CMAKE_CXX_COMPILER icecc x86_64-w64-mingw32-g++-win32)
С export ICECC_DEBUG=debug
Я получаю следующий вывод при компиляции файла C ++:
/usr/bin/icecc x86_64-w64-mingw32-g++-win32 .....
...
ICECC[1287] 16:11:18: connected to /var/run/icecc/iceccd.socket
ICECC[1287] 16:11:18: <building_local>
ICECC[1287] 16:11:29: invoking: /usr/bin/x86_64-w64-mingw32-g++-win32
ICECC[1287] 16:11:31: </building_local: 12379ms>
…поэтому icecc, похоже, не распространяет сборку. Что я делаю неправильно?
Редактировать: для нативной компиляции я использую ccache и CCACHE_PREFIX=icecc
, который работает просто отлично (сборка в кластере из 15+ узлов), поэтому icecc, кажется, настроен правильно.
Обновить: Я считаю, что такое поведение вызвано ошибка в ICECC, который теперь должен быть фиксированный в более новых версиях ICECC.
От ПРОЧТИ МЕНЯ
Создайте символические ссылки с именами кросс-компиляторов (например,
arm-eabi- [gcc, g ++] и arm-linux-androideabi- [gcc, g ++]), указывая на
где двоичный файл iccc. Убедитесь, что эти символические ссылки находятся в
$ PATH и до пути цепочек инструментов.
Поскольку вы используете ccache, вы должны добавить следующие символические ссылки к вашему кросс-компилятору внутри /usr/lib/ccache
Ниже приведен пример для кросс-компилятора arm
$ ls -al /usr/lib/ccache
lrwxrwxrwx 1 root root 16 Apr 13 13:25 arm-poky-linux-gnueabi-g++ -> ../../bin/ccache
lrwxrwxrwx 1 root root 16 Apr 13 13:25 arm-poky-linux-gnueabi-gcc -> ../../bin/ccache
.....
Других решений пока нет …