ссылка на 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<char, std::__1::char_traits, std::__1::allocator >::find(char const*, unsigned long, unsigned long) const", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::find(char, unsigned long) const", referenced from: CR39DataFile::trim(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::compare(char const*) const", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::__vector_base_common::__throw_length_error() const", referenced from: std::__1::vector<frame*, std::__1::allocator >::__append(unsigned long) in CR39DataFile.o std::__1::vector<std::__1::vector<frame*, std::__1::allocator >*, std::__1::allocator<std::__1::vector<frame*, std::__1::allocator >*> >::__append(unsigned long) in CR39DataFile.o "std::__1::__vector_base_common::__throw_out_of_range() const", referenced from: std::__1::vector<std::__1::vector<frame*, std::__1::allocator >*, std::__1::allocator<std::__1::vector<frame*, std::__1::allocator >*> >::at(unsigned long) in CR39DataFile.o std::__1::vector<frame*, std::__1::allocator >::at(unsigned long) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::erase(unsigned long, unsigned long)", referenced from: CR39DataFile::trim(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::assign(char const*)", referenced from: CR39DataFile::CR39DataFile() in CR39DataFile.o CR39DataFile::clear() in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::insert(unsigned long, unsigned long, char)", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::resize(unsigned long, char)", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::reserve(unsigned long)", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::basic_string(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from: DataFile::read(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, bool) in DataFile.o DataFile::write(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, bool) in DataFile.o std::__1::thread::thread<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, void>(bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >)&&, DataFile*&&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&&&) in DataFile.o CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o CR39DataFile::write_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o CR39DataFile::write_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, float, float, float, float, float, float, float, float, float, float) in CR39DataFile.o CR39DataFile::write_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, float, float, float, float, float, float) in CR39DataFile.o ... "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::basic_string(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, unsigned long, unsigned long, std::__1::allocator const&)", referenced from: CR39DataFile::read_thread(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::~basic_string()", referenced from: DataFile::~DataFile() in DataFile.o DataFile::read(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, bool) in DataFile.o DataFile::write(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, bool) in DataFile.o std::__1::thread::thread<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, void>(bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >)&&, DataFile*&&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&&&) in DataFile.o void* std::__1::__thread_proxy<std::__1::tuple<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >(void*) in DataFile.o std::__1::__tuple_leaf<2ul, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, false>::~__tuple_leaf() in DataFile.o CR39DataFile::CR39DataFile() in CR39DataFile.o ... "std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >::operator=(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from: CR39DataFile::set_file_path(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o CR39DataFile::set_file_auxpath(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in CR39DataFile.o "std::__1::__thread_struct::__thread_struct()", referenced from: void* std::__1::__thread_proxy<std::__1::tuple<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >(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<std::__1::tuple<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >(void*) in DataFile.o "std::__1::__throw_system_error(int, char const*)", referenced from: std::__1::thread::thread<bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >), DataFile*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, void>(bool (DataFile::*)(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >)&&, DataFile*&&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > 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 

One Solution collect form web for “ссылка на clang ++ на OS X генерирует много символов, не найденных ошибок”

Я подозреваю, что эта проблема связана с двумя библиотеками времени выполнения C ++, доступными в OS X. Для связывания динамической библиотеки используйте следующую ссылку:

 clang++ -stdlib=libc++ -o Analysis.dylib -shared DataFile.o CR39DataFile.o 

(the -stdlib=libc++ является ключевым отличием). Я думаю, что среда исполнения C ++ по умолчанию – это реализация GNU, которая запутывает компоновщик при компиляции с реализацией libc ++.

  • Что эквивалентно команде apt-get Ubuntu на Mac
  • Как отключить комбинацию клавиш Option-Space для неразрывных пробелов?
  • NTFS жесткий диск не смонтирован, как переформатировать в Journaled HFS + и сохранить данные
  • Windows 7: Неплохая идея поделиться всем «Пользовательским» каталогом со всеми?
  • Как настроить настраиваемые обработчики URL-адресов в OS X?
  • Класс JavaLaunchHelper реализован в двух местах
  • Выделение текста в средстве просмотра Windows CHM по умолчанию
  • Как установить версию Python по умолчанию на 3.x на OS X?
  • IMAP на Mail.app и вопросы Gmail
  • Скопировать структуру каталогов без копирования файлов в Mac OS X
  • Получить имя активного пользователя в скрипте в Mac OS
  • Interesting Posts

    AngularJS – Передача данных между страницами

    Как создать новый том со свободным пространством

    Математическая цепочка оператора сравнения – как и в случае, если ((5 <j <= 1)) "

    Ошибка сегментации при больших размерах массива

    Android HTML.fromHTML () с изображениями?

    Является ли добавление байтов в int из правил java языка или из-за jvm?

    Как сортировать значения карты по ключу в Java?

    Функция clearRect не очищает полотно

    Как десериализовать список, используя GSON или другую библиотеку JSON в Java?

    Проблемы с конверсией Delphi Unicode

    Windows 7 имеет странную идею о том, что в полноэкранном режиме

    Глобальный захват клавиатуры в приложении C #

    Постоянное сохранение данных в android

    USB WiFi-устройство, которое может эмулировать виртуальное запоминающее устройство для домашнего видеопроигрывателя

    Полностью отключить ведение журнала Apache

    Давайте будем гением компьютера.