我正在尝试与icecc进行交叉编译,但是没有运气。现在,我正在尝试使用mingw在我的Linux系统上为Windows编译,它可以正常工作(即使使用ccache),但是我无法获得icecc来正确分发编译。

不幸的是,icecc documentation相当模糊。例如,应将ICECC_VERSION中的“平台”设置为什么?是否有任何有效/可识别的值?

目前,我已经使用以下方法创建了 native 工具链存档:

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.gzwin64-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工具链文件中(作为尝试的临时解决方案):
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似乎没有分发构建。我究竟做错了什么?

编辑:对于 native 编译,我使用ccache和CCACHE_PREFIX=icecc,它们工作正常(在15个以上节点的群集中构建),因此icecc似乎设置正确。

更新:我相信此行为是由bug in ICECC引起的,在较新版本的ICECC中,现在应该是fixed

最佳答案

README



由于您使用的是ccache,因此必须在/usr/lib/ccache内的交叉编译器中添加以下符号链接(symbolic link)

以下是 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
 .....

关于c++ - 与icecc交叉编译时如何设置ICECC_VERSION,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43740422/

10-09 17:12