首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法识别的命令行选项'-stdlib=libc++‘与MacPorts gcc48

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

Stack Overflow用户
提问于 2014-06-25 22:46:47
回答 1查看 23.4K关注 0票数 13

上下文

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

代码语言:javascript
复制
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“程序时,也会出现同样的问题:

代码语言:javascript
复制
dhcp-130-112:helloworld bwells$ g++ -stdlib=libc++ helloworld.cpp 
g++: error: unrecognized command line option '-stdlib=libc++'

如果没有该标志,它就编译得很好:

代码语言:javascript
复制
dhcp-130-112:helloworld bwells$ g++ helloworld.cpp 
dhcp-130-112:helloworld bwells$ ls
a.out       helloworld.cpp

我的编译器版本是:

代码语言:javascript
复制
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“正如您所期望的那样

代码语言:javascript
复制
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++问题是一个更大问题的症状,这就是为什么我试图直接解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 22:59:50

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

由于您有链接错误,您使用的其他包很可能是用clang和libc++编译的,这与GCC的libstdc++不兼容(除了一些低级的东西)。因此,您还需要使用clang和libc++编译包。苹果的Xcode附带了clang (这可能就是您想要使用的),MacPorts还提供了许多clang发行版。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24419832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档