3

我尝试编译简单的代码

#include <atomic>
int bar = 0;
void foo(std::atomic<int>&flag)
{ bar = flag; }

使用 clang++ 3.2(从 llvm.org 下载为 llvm 3.2;在 mac os.x 10.8.3 上失败并出现错误

/> clang++ -std=c++11 -stdlib=libc++ -O3 -march=native -c test.cc

在 test.cc:1 中包含的文件中:

/usr/include/c++/v1/atomic:576:17:错误:原子操作的第一个参数必须是指向非 const _Atomic 类型的指针('const _Atomic(int) *' 无效)

{return __c11_atomic_load(&__a_, __m);}
        ^                 ~~~~~

/usr/include/c++/v1/atomic:580:53:注意:在此处请求成员函数“std::_ 1:: _ atomic_base::load”的实例化

operator _Tp() const _NOEXCEPT          {return load();}
                                                ^

test.cc:5:9:注意:在此处请求成员函数“std::_ 1:: _ atomic_base::operator int”的实例化

bar = done;

当我使用 /usr/bin/clang++ 代替(操作系统或 Xcode 附带)时,它编译得很好。在这两种情况下,libc++ 都位于 /usr/lib/c++/v1 中。

我错过了什么?llvm 3.2 中是否还有另一个 libc++,但我错过了?(我在 clang3.2 树中找不到任何东西)。

4

1 回答 1

1

Xcode 现在将 libc++ 捆绑在 Xcode.app 目录中。您可以通过控制单击 Xcode.app 并选择“显示包内容”来检查此目录。

于 2013-04-25T15:11:28.177 回答