我正在尝试用icecc进行交叉编译,没有运气。现在,我正在尝试使用mingw在我的Linux系统上编译Windows,它工作正常(即使使用ccache),但我无法通过icecc正确地分发编译。
不幸的是,icecc documentation相当含糊。例如,什么应该"平台"在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工具链文件中,我(作为尝试的临时解决方案):
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似乎设置正确。
更新:我认为此行为是由bug in ICECC引起的,现在在较新版本的ICECC中应为fixed。
答案 0 :(得分:2)
使用交叉编译器名称创建符号链接(例如 arm-eabi- [gcc,g ++]和arm-linux-androideabi- [gcc,g ++])指向 icecc二进制文件在哪里。确保这些符号链接在 $ PATH和工具链路径之前。
由于使用的是ccache,因此必须在/usr/lib/ccache
内的交叉编译器中添加以下符号链接
下面是一个手臂交叉编译器的示例
$ 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
.....