gpt4 book ai didi

c++ - MacPorts gcc48 无法识别的命令行选项 '-stdlib=libc++'

转载 作者:可可西里 更新时间:2023-11-01 15:10:27 27 4
gpt4 key购买 nike

上下文

我正在尝试编译包“root_numpy”,它是科学分析软件“root”和 python 包“numpy”之间的链接。它用作根包装器“rootpy”的一部分。执行以下行时出现 g++ 错误:

g++ -bundle -undefined dynamic_lookup -g -arch x86_64 -headerpad_max_install_names 
-arch x86_64 build/temp.macosx-10.6-x86_64-2.7/root_numpy/src/_librootnumpy.o
-o build/lib.macosx-10.6-x86_64-2.7/root_numpy/_librootnumpy.so
-L/Users/bwells/bin/root/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d
-lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread
-lpthread -Wl,-rpath,/Users/bwells/bin/root/lib -stdlib=libc++ -lm -ldl
-lTreePlayer
g++: error: unrecognized command line option '-stdlib=libc++'

当我编译带有标志的“hello world”程序时出现同样的问题:

dhcp-130-112:helloworld bwells$ g++ -stdlib=libc++ helloworld.cpp 
g++: error: unrecognized command line option '-stdlib=libc++'

没有那个标志,它编译得很好:

dhcp-130-112:helloworld bwells$ g++ helloworld.cpp 
dhcp-130-112:helloworld bwells$ ls
a.out helloworld.cpp

我的编译器版本是:

dhcp-130-112:helloworld bwells$ g++ --version
g++ (MacPorts gcc48 4.8.2_2) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

也就是运行 sudo port install gcc48 的结果。我的 Mac 操作系统版本是 10.9.3。代码文件“helloworld.cpp”如您所料

dhcp-130-112:helloworld bwells$ cat helloworld.cpp 

#include <iostream>

int main(void)
{
std::cout << "Hello world!" << std::endl;
return 0;
}
dhcp-130-112:helloworld bwells$

问题:根据我在互联网上收集到的所有信息,“-stdlib=...”标志是 g++ 的标准部分。为什么在包含它时会出现 g++ 错误?我该如何解决这个问题?

注意:虽然手动执行没有问题标志的 setup.py 行有效,并允许编译完整的包,但当我尝试将生成的包导入 python 时遇到链接错误。我担心这里的 g++ 问题是一个更大问题的征兆,这就是我试图直接解决它的原因。

最佳答案

-stdlib=libc++ 是一个 Clang(不是 GCC)选项,它告诉 clang 使用 LLVM libc++ 标准库(这是 Clang 使用的)而不是 GNU libstdc++(这是 GCC 使用的)。

由于您遇到链接错误,您使用的其他包似乎是用 clang 和 libc++ 编译的,这与 GCC 的 libstdc++ 不兼容(除了一些低级的东西)。所以你还需要用 clang 和 libc++ 编译包。 Apple 的 Xcode 带有 clang(这可能是您想要为此使用的),MacPorts 还提供了许多 clang 发行版。

关于c++ - MacPorts gcc48 无法识别的命令行选项 '-stdlib=libc++',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com