在 travis 上使用带有 -m32 的 g++ 会导致错误

using g++ with -m32 on travis results in an error

我正在安装这些软件包:g++-4.7 gcc-4.7-multilib 并且我将 CXX 设置为 g++-4.7

我通过发出 ${CXX} --version

验证编译器确实是 4.7

之后我这样调用 cmake:

cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .

我的项目只有 C++ 源文件,因此不需要 C 标志。我在 travis 上遇到的错误是:

/usr/include/c++/4.7/cstdio:43:28: fatal error: bits/c++config.h: No such file or directory

有什么想法吗?我使用 -m64

没问题

编辑:

刚刚也尝试了 g++-4.7-multilib(g++ 而不是 gcc),但仍然没有运气 - 同样的错误。

看起来你 运行 喜欢这个:Missing include "bits/c++config.h" when cross compiling 64 bit program on 32 bit in Ubuntu

确保您安装了相同版本的 gcc、g++、gcc-multilib 和 g++-multilib,如果这没有帮助,请尝试将 -I/usr/include/c++/4.7/i686-linux-gnu 添加到 CXXFLAGS

我查看了日志,看到了这个...

Installing APT Packages (BETA)
Disallowing packages: g\+\+-4.7-multilib
If you require these packages, please review the package approval process at:
https://github.com/travis-ci/apt-package-whitelist#package-approval-process

事实证明,只有 gcc 4.6 和 4.7 的包不在白名单中 - 其他 gcc 版本有...将请求它。