是什么导致gcc对mtune的选项无效?

是什么导致gcc对mtune的选项无效?,gcc,Gcc,我在程序中使用ODB库。通过编译,我得到了以下信息: [ 1%] Generating ../odb_gen/XXX_odb.cpp cc1plus: error: bad value (‘/dev/null’) for ‘-mtune=’ switch cc1plus: error: bad value (‘/dev/null’) for ‘-mtune=’ switch cc1plus: note: valid arguments to ‘-mtune=’ switch are: noco

我在程序中使用ODB库。通过编译,我得到了以下信息:

[  1%] Generating ../odb_gen/XXX_odb.cpp
cc1plus: error: bad value (‘/dev/null’) for ‘-mtune=’ switch
cc1plus: error: bad value (‘/dev/null’) for ‘-mtune=’ switch
cc1plus: note: valid arguments to ‘-mtune=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2 generic
cc1plus: note: valid arguments to ‘-mtune=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2 generic
XXXX/build.make:249: recipe for target 'odb_gen/XXX_odb.cpp' failed
make[2]: *** [odb_gen/XXX_odb.cpp] Error 1
我不知道这个错误消息的原因是什么,因此我不知道如何修复它。如果有人能给出一个起点或解释是什么导致了这种行为,我将不胜感激。 提前谢谢你


PS:“mtune”选项为什么设置为/dev/null?

在成功使用odb几个月后,我突然遇到了同样的问题。要向前推进,可以尝试在调用odb时添加-v命令吗?这将添加详细的输出。我怀疑您安装的g++版本与ODB2.4.0不兼容,ODB2.4.0是大约5年前发布的,原始开发人员可能没有使用最新版本的gcc对其进行测试。我目前正在运行gcc 7.5.0(Ubuntu 7.5.0-3ubuntu1~18.04)


你以前能用odb编译吗?你最近更新过gcc吗?我还建议将你的文章标题改为包含关键字“odb”,以便其他人能更容易地找到它。

更新到Ubuntu 18.04.4(GCC 7.5.0)后的同一篇文章

使用较旧的GCC对我有用

sudo apt-get install gcc-7-base=7.3.0-16ubuntu3 cpp-7=7.3.0-16ubuntu3 gcc-7=7.3.0-16ubuntu3 libgcc-7-dev=7.3.0-16ubuntu3 libasan4=7.3.0-16ubuntu3 libubsan0=7.3.0-16ubuntu3 libcilkrts5=7.3.0-16ubuntu3  
sudo apt-get install g++-7=7.3.0-16ubuntu3 libstdc++-7-dev=7.3.0-16ubuntu3  
sudo ln -s /usr/bin/g++-7 /usr/bin/g++  
sudo ln -s /usr/bin/gcc-7 /usr/bin/gcc  
sudo ln -s /usr/bin/gcc /usr/bin/cc

您需要能够看到由
cmake
隐藏的命令行(我猜您正在使用该命令)-在您能够看到正在运行的命令之前,您或我们无法提供任何帮助。显然,它是由CMake配置错误设置的。因此,您可能必须调试它。我也有同样的问题。CI测试失败,因为它们在Ubuntu仿生图像上自动使用g++-7.5.0。以前是7.4.0。