相关疑难解决方法(0)

当运行从源构建的clang时,如何指定libc ++的位置,或者,有人向我解释-stdlib = libc ++是什么

我正在使用clang的规定开发插件和工具,通过插件和clang的LibTooling来实现.我能做以下事情:

  • 通过运行configure脚本(不使用cmake)按照入门页面编译来自svn(Linux和OSX)的clang里面的llvm
  • 在Linux上编译libcxx/libc ++(也来自svn),我没理由在OSX上遇到任何麻烦.问题是libc ++头文件已存在于我的OSX系统上

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/
    
    Run Code Online (Sandbox Code Playgroud)

    并且libc ++ dylib位于/ usr/lib /.

    编辑4:我能够按照指示在OS X上编译libcxx.我有一个全新的libc ++.1.0.dylib现在坐在这里.

  • 在OSX上,使用Release + Asserts(和Debug + Asserts)构建clang++来编译C++源代码,方法是附加

    -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/
    
    Run Code Online (Sandbox Code Playgroud)

    并且不使用-stdlib=libc++.使用此标志将libc ++显式指定为include目录允许我构建的clang"看到"标准c ++标头.令人惊讶的是,它在编译一个适度基本的源文件时仍然很满意(它仍然在其中运行了大量的c ++ 11疯狂)

基于此,您可以看到我正在修改我刚刚构建的clang version 3.6.0 (trunk 217905)用于查找Apple的Xcode打包的libc ++.这表面上看起来很有效,因为Apple的libc ++与Xcode一起提供的ABI兼容我刚从源代码构建的编译器.对我来说仍然很好奇的是我的新编译的clang能够找出在哪里找到相应的libc ++ dylib!这引发了后来我实际上编译libc ++时的问题,我该如何告诉我的新svn编译的clang查找并使用新的svn编译的libc ++ dylib?

所以,基本上,我还是心乱如麻什么,我真的应该做成立的libc ++正常.具体来说,当你说出来时clang 实际上做了什么-stdlib=libc++

它是一个硬编码的包含路径吗?我可能想要从svn构建libc ++ abi和libc ++以与从svn构建的clang一起使用.这是最有意义的...然后我该如何安装呢?必须将-I~/libcxx/include/c++/v1/(或任何它可能的)放入构建配置是不优雅的.

据推测,我可以设置我的llvm构建来构建clang以及libc ++ abi和libc ++,同时从svn中查看libcxxabi和libcxx,我的期望是安装它应该-stdlib=libc++神奇地工作.另请注意,Apple为您提供Xcode的铿锵声并不需要您使用-stdlib=libc++.它只是神奇地知道在哪里抓取库文件.

然而!美中不足,至少是迄今为止我所知道的唯一一个:我的机器已经有了/usr/bin/clang++:

$ ls -la $(which clang++)
-rwxr-xr-x  1 root  wheel  14240 Mar …
Run Code Online (Sandbox Code Playgroud)

c++ macos clang

8
推荐指数
1
解决办法
1508
查看次数

如何指定自定义 libc++

我已经构建了 libc++ 并且想在编译我的程序时使用它?所以我有类似的东西

clang++ -stdlib=~/libc++/libc++.so main.cpp
Run Code Online (Sandbox Code Playgroud)

但这不起作用。构建应用程序时如何使用我自定义构建的 libc++?

c++ clang libc++

6
推荐指数
1
解决办法
1279
查看次数

标签 统计

c++ ×2

clang ×2

libc++ ×1

macos ×1