Abe*_*der 15 c++ homebrew gcc llvm c++11
这是我的问题:我想使用gcc或clang提供的C++ 11功能.但是,我有这些要求:
Homebrew似乎只想使用gcc(如果我错了,请纠正我).我找不到任何切换到LLVM的选项.虽然我知道这可能是因为并非所有库都与LLVM兼容,但这仍然是一个很好的功能.
预装在gcc mac上的gcc版本是4.2.gcc 4.2没有所需的c ++ 11功能.我已经安装了通过自制软件4.7,但对于如何设置自制的搜索使用它都说不这样做(GCC 4.2的Mac是不是香草版本,所以在4.7版本我将无法编译一些事情).
我的问题是:有没有人有任何建议或修复他们已经实现解决这个问题?我应该放弃Homebrew吗?有谁知道Homebrew是否有计划在未来转向LLVM?有没有人有如何处理这些不兼容性的升级计划?
从长远来看,我看不出自制软件是如何继续依赖gcc 4.2的,但是没有找到关于此问题的真正讨论.
Mac上的默认GCC不是GNU的真正GCC.它实际上是LLVM-GCC,它是GCC的一个分支.几年前,LLVM-GCC被终止,取而代之的是DragonEgg,这是一个使用LLVM作为GCC后端的GCC插件.
LLVM-GCC只是一个编译器前端,其作用是使用GCC前端将源代码转换为LLVM IR [ LLVM 11.3 简介 ].生成IR后,LLVM后端将使用它生成二进制代码.这一步与GCC无关.
上述目标完全取自10.7,其组件全部由clang编译,这是LLVM提供的前端.
但Apple仍然保留了LLVM-GCC和GCC运行时库.我想它的目的可能是提供一个编译一些代码GCC的机会.
现在让我们回答你的问题:
clang++ -stc=c++11 -stdlib=libc++改用.而铛可能已经支持的所有C++ 11种功能.--with-c++11参数来使用clang来编译boost.But你不能使用这个参数brew install autoconf.实际上,clang可能无法正确编译某些组件.$HOMEBREW_ROOT/Library/Formula目录下破解相应的ruby脚本.幸运的是,在大多数情况下,替换./configure blablabla用./configure blablabla CXX=clang++ -stc=c++11 -stdlib=libc++效果很好.顺便说一句,如果您的黑客成功,请向自制程序提出拉取请求.所以,试试吧,玩得开心.
我有一个OS X Mountain Lion环境并使用C++ 11.在这个答案中,我将打破你不编译自己的东西的要求.
我使用Homebrew,我必须说,我建议你放弃依赖它来为你提供clang和libc ++以及用它们构建的所有公式.
我所做的和我喜欢的是
/opt/local,并把/opt/local/bin在顶部上/etc/paths.我已经按照clang构建说明将其安装到/opt/local.
对于libc ++,一个细节:在运行buildit脚本之后,我将include目录符号链接到/opt/local/lib/c++/v1(clang on /opt/local将其视为默认目录),并将libs符号链接到/opt/local/lib/(但看起来二进制文件不会自动链接到libc ++上/opt/local/lib.必须使用install_name_tool).
使用
clang++ -std=c++11 -stdlib=libc++
Run Code Online (Sandbox Code Playgroud)
你还可以从 homebrew-dups 安装最新的 gcc
brew install [flags] https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb
Run Code Online (Sandbox Code Playgroud)