尝试编译包含 Root (Cern) 参数的 C++ 代码

Trying to compile a C++ code with Root (Cern) parameters included

我正在尝试在 Mac 上编译用 C++ 和 Root 编写的代码。该代码来自一位在 Linux 笔记本电脑上工作的同事。除了 OS 不同之外,我的 gcc 和 Root 版本都与她不同,我不确定是哪个差异导致代码无法在我的机器上编译。

她有 g++ 4.8 和 root 5.(一些东西)。我有 gcc 5.3.0 和 root 6.06/02。

她给了我一行代码,她用来让她的机器编译代码

gcc -Wall -o executable_name code_name.cc `root-config --cflags --glibs`

但是当我在我的机器上写时,终端给我错误

gcc: error: unrecognized command line option ‘-stdlib=libc++’
gcc: error: unrecognized command line option ‘-stdlib=libc++’

我需要帮助生成正确的行以使 gcc 编译代码。

这里的问题有两个方面:您使用的是 OSX 并且您使用的是 GCC。

这个问题是 root-config 假设因为你在 OSX 你将使用 OSX-标准的 Clang 编译器,它有 -stdlib旗帜。由于您使用的不是 Clang,而是 GCC(没有此标志),因此您会收到错误消息。

您有两种可能的解决方案:使用clang++而不是g++来编译和构建(如果尚未安装编译器,则需要您安装它,Xcode自带) ,或修改 root-config 脚本,使其不添加 -stdlib=libc++root-config 脚本检查的环境变量或标志可能会改变行为,但我对脚本一无所知,你必须检查它。