соединение с clang ++ на OS X генерирует много ошибок символов не найдено

Я пытаюсь скомпилировать некоторый код C ++ (включая функции C ++ 11) на OS X 10.8, используя компилятор clang ++. У меня есть make-файл, который генерирует объектные файлы ОК, затем по команде:

clang++  -o Analysis.so -shared DataFile.o CR39DataFile.o

Я получаю тонны ошибок о символах, не найденных для архитектуры x86_64. Код отлично работает в системе * nix, использующей g ++ и соответствующим образом изменяющей флаги компилятора для поддержки C ++ 11. Для компиляции * .o я делаю это так:

clang++ -c -Wall -std=c++11 -stdlib=libc++ -I../src ../src/DataFile.cc

Редактировать: вывод команды связывания:

clang++  -o Analysis.so -shared DataFile.o CR39DataFile.o
Undefined symbols for architecture x86_64:
"std::__1::basic_string::find(char const*, unsigned long, unsigned long) const", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::find(char, unsigned long) const", referenced from:
CR39DataFile::trim(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::compare(char const*) const", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::__vector_base_common::__throw_length_error() const", referenced from:
std::__1::vector::__append(unsigned long) in CR39DataFile.o
std::__1::vector::__append(unsigned long) in CR39DataFile.o
"std::__1::__vector_base_common::__throw_out_of_range() const", referenced from:
std::__1::vector::at(unsigned long) in CR39DataFile.o
std::__1::vector::at(unsigned long) in CR39DataFile.o
"std::__1::basic_string::erase(unsigned long, unsigned long)", referenced from:
CR39DataFile::trim(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::assign(char const*)", referenced from:
CR39DataFile::CR39DataFile() in CR39DataFile.o
CR39DataFile::clear() in CR39DataFile.o
"std::__1::basic_string::insert(unsigned long, unsigned long, char)", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::resize(unsigned long, char)", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::reserve(unsigned long)", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::basic_string(std::__1::basic_string const&)", referenced from:
DataFile::read(std::__1::basic_string const&, bool) in DataFile.o
DataFile::write(std::__1::basic_string const&, bool) in DataFile.o
std::__1::thread::thread(bool (DataFile::*)(std::__1::basic_string)&&, DataFile*&&, std::__1::basic_string const&&&) in DataFile.o
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
CR39DataFile::write_thread(std::__1::basic_string) in CR39DataFile.o
CR39DataFile::write_thread(std::__1::basic_string, float, float, float, float, float, float, float, float, float, float) in CR39DataFile.o
CR39DataFile::write_thread(std::__1::basic_string, float, float, float, float, float, float) in CR39DataFile.o
...
"std::__1::basic_string::basic_string(std::__1::basic_string const&, unsigned long, unsigned long, std::__1::allocator const&)", referenced from:
CR39DataFile::read_thread(std::__1::basic_string) in CR39DataFile.o
"std::__1::basic_string::~basic_string()", referenced from:
DataFile::~DataFile() in DataFile.o
DataFile::read(std::__1::basic_string const&, bool) in DataFile.o
DataFile::write(std::__1::basic_string const&, bool) in DataFile.o
std::__1::thread::thread(bool (DataFile::*)(std::__1::basic_string)&&, DataFile*&&, std::__1::basic_string const&&&) in DataFile.o
void* std::__1::__thread_proxy(void*) in DataFile.o
std::__1::__tuple_leaf::~__tuple_leaf() in DataFile.o
CR39DataFile::CR39DataFile() in CR39DataFile.o
...
"std::__1::basic_string::operator=(std::__1::basic_string const&)", referenced from:
CR39DataFile::set_file_path(std::__1::basic_string) in CR39DataFile.o
CR39DataFile::set_file_auxpath(std::__1::basic_string) in CR39DataFile.o
"std::__1::__thread_struct::__thread_struct()", referenced from:
void* std::__1::__thread_proxy(void*) in DataFile.o
"std::__1::__thread_struct::~__thread_struct()", referenced from:
std::__1::__thread_specific_ptr::reset(std::__1::__thread_struct*) in DataFile.o
"std::__1::__thread_local_data()", referenced from:
void* std::__1::__thread_proxy(void*) in DataFile.o
"std::__1::__throw_system_error(int, char const*)", referenced from:
std::__1::thread::thread(bool (DataFile::*)(std::__1::basic_string)&&, DataFile*&&, std::__1::basic_string const&&&) in DataFile.o
"std::__1::thread::~thread()", referenced from:
DataFile::cleanup_file_io() in DataFile.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Analysis.so] Error 1

Ответы на вопрос(2)

Ваш ответ на вопрос