我正在尝试使用clang ++编译器在OS X 10.8上编译一些C++代码(包括C++ 11特性).我有一个生成目标文件的makefile,然后在命令上:
clang++ -o Analysis.so -shared DataFile.o CR39DataFile.o
Run Code Online (Sandbox Code Playgroud)
关于架构x86_64找不到符号,我收到很多错误.该代码在使用g ++的*nix系统上正常工作,并适当地更改编译器标志以支持C++ 11.要编译*.o我这样做:
clang++ -c -Wall -std=c++11 -stdlib=libc++ -I../src ../src/DataFile.cc
Run Code Online (Sandbox Code Playgroud)
编辑:链接命令的输出是:
clang++ -o Analysis.so -shared DataFile.o CR39DataFile.o
Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char const*, unsigned long, unsigned long) const", referenced from:
CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in CR39DataFile.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char, unsigned long) const", referenced from:
CR39DataFile::trim(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in CR39DataFile.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in CR39DataFile.o …Run Code Online (Sandbox Code Playgroud)