c++ - 与icecc交叉编译时如何设置ICECC_VERSION

标签 c++ linux mingw cross-compiling distributed

我正在尝试与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 引起的,现在应该是 fixed在较新版本的 ICECC 中。

最佳答案

来自README

Create symbolic links with the cross compilers names (e.g. arm-eabi-[gcc,g++] and arm-linux-androideabi-[gcc,g++]) pointing to where the icecc binary is. Make sure these symbolic links are in the $PATH and before the path of the toolchains.

由于您使用的是ccache,因此您必须将以下符号链接(symbolic link)添加到/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
 .....

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

相关文章:

linux - sed 如何仅在行包含字符串时替换 csv?

php - 如何在 AWS Linux/CentOS 上使用 Yum 更新 PHP 版本

windows - 使用 Msys2 为 mingw 安装 Rust 和 Cargo 的分步说明?

c++ - 使用 Cygwin 构建 GLEW 失败

c++ - 如何使用 gsl_interp 获得多项式插值系数?

c++ - #define 不执行所有参数

linux - 如何从 bash 脚本确定 gcc 的配置?

python - 尝试使用 cython 和 mingw 编译 hello world 时出错

c++ - Boost Hana 实现自定义序列

c++ - 类中的函数定义是否占用类大小的一部分?