c ++在Ubuntu中编译,但不在centOS中编译

时间:2016-03-07 13:11:13

标签: c++ linux gcc centos

我有一堆使用GCC 4.8.4在Ubuntu中编译的代码。 当我转移到centOS并在那里编译它时会发生以下错误:

[  0%] Building CXX object src/chrono/CMakeFiles/ChronoEngine.dir/core/ChClassRegister.cpp.o
In file included from /home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.cpp:21:
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h: In destructor 'chrono::ChClassFactory::~ChClassFactory()':
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:225: error: expected initializer before ':' token
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:228: error: could not convert '((chrono::ChLog*)chrono::GetLog())->chrono::ChLog::<anonymous>.chrono::ChStreamOutAscii::operator<<(((const char*)"Delete ChClassFactory \012"))' to 'bool'
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:229: error: expected primary-expression before '}' token
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:229: error: expected ')' before '}' token
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:229: error: expected primary-expression before '}' token
/home/com/medyn/chrono/chrono_ver1/Chrono_source_Old/src/chrono/core/ChClassRegister.h:229: error: expected ';' before '}' token
make[2]: *** [src/chrono/CMakeFiles/ChronoEngine.dir/core/ChClassRegister.cpp.o] Error 1
make[1]: *** [src/chrono/CMakeFiles/ChronoEngine.dir/all] Error 2
make: *** [all] Error 2

这些错误适用于GCC 4.4.7和GCC 4.8.5。 它给出错误的代码行是:

    ~ChClassFactory () {
    for(const auto & it : class_map ) {
       GetLog() << "   registered: " << it.first << "\n";
    }
    GetLog() << "Delete ChClassFactory \n";
    }

此脚本顶部的文件包括:

#include <stdio.h>
#include <string>
#include <typeinfo>
#include "core/ChLog.h"
#include "core/ChRunTimeType.h"
#include <unordered_map>

我已检查所有包含文件是否存在,并且我已经制作了另一个脚本来测试我是否可以使用它们,我可以。

我之所以不留Ubuntu是因为我必须使用的超级计算机正在运行centOS。

有没有人能解决这个问题?

如果您需要其他信息,请告知我们。

此致 安德斯

修改

使用GCC 4.8.5版本,NathanOliver提供的程序编译并运行。 我使用:

直接从终端编译它
g++ -std=c++11 main.cpp -o main
./main
1 2 3 4 5 

它与-std=c++0x一起运行。 不知何故,我无法使用-std=c++14。 它给出了以下错误:

g++: error: unrecognized command line option '-std=c++14'

修改

所以回到主要问题。我的Makefile,有以下几行:

//Flags used by the compiler during all build types.
CMAKE_CXX_FLAGS:STRING=-std=c++0x

所以我不明白为什么程序不应该运行?

0 个答案:

没有答案