XCode 5.0.1 выдает ошибку после успешной компиляции 161 файла проекта C ++.
Было много вопросов об ошибках Apple Mach-O Linker, но никто не помог мне.
Сообщение об ошибке выглядит следующим образом:
ld: -r and -dead_strip cannot be used together
clang: error: linker command failed with exit code 1
(use -v to see invocation)
Раздел ссылок в моей настройке сборки показан на следующем рисунке:
Раздел компоновщика XCode 5.0.1
Может кто-нибудь дать мне знать, как решить эту ошибку?
ОБНОВИТЬ
Когда я установил Dead Code Stripping
в No
тогда я получаю 19 ошибок связывания. Mach-O Type
установлен в Dynamic Library
для обоих Release
а также Debug
,
Ошибки в этом случае следующие:
Undefined symbols for architecture x86_64:
"boost::re_detail_106000::perl_matcher<__gnu_cxx::__normal_iterator<wchar _t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > >, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::construct_init(boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > const&, boost::regex_constants::_match_flags)", referenced from:
boost::re_detail_106000::perl_matcher<__gnu_cxx::__normal_iterator<wchar_ t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > >, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::perl_matcher(__gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, __gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, boost::match_results<__gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > > >&, boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<wchar_t const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >) in AdWrksTagDataFactory.o
И сообщение об ошибке как следующее:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
В некоторых похожих вопросах я видел, что это может быть связано с несколькими версиями Boost, но я уже проверял это.
Просто установите Dead Code Stripping
в No
, Когда эта опция установлена на Yes
Xcode добавит -dead_strip
флаг во время ссылки, который не поддерживается при связывании перемещаемых двоичных файлов.
Других решений пока нет …