Я получаю эту ошибку при попытке кросс-компиляции LLVM v3.7 с / cmake:
<path to clang>/clang++ -DHAVE_CXX_ATOMICS_WITHOUT_LIB -std=c++11 -rdynamic CMakeFiles/cmTC_82a21.dir/src.cxx.o -o cmTC_82a21 -lm -ldl && :
ld.lld: error: undefined symbol: pthread_once
referenced by cxa_exception_storage.cpp
за этим следуют многочисленные другие "неопределенные символы: pthread_blah" ошибки в файле CMakeError.log.
У меня есть четыре вопроса:
(1) Какую фазу работы выполняет cmake для определения возможностей среды / платформы сборки, которая называется? (то есть фаза, подобная конфигурированию, которая выполняет многочисленные небольшие тесты компиляции, чтобы определить, успешно ли они выполнены, посмотреть, сможет ли он найти заголовочные файлы в ожидаемых путях и т. д.).
(2) Мне кажется, что включение -lpthread как части строки компиляции теста решит эту проблему. (а) Есть ли способ сказать cmake, чтобы сделать это, и (б) это разумный подход к решению этой проблемы? Похоже, если бы я мог сказать cmake сделать это, он бы прошел эти тесты.
(3) Команда cmake , кажется, завершается успешно, поскольку она заканчивается "Файлы сборки были записаны в ...". Что мне следует делать, когда один из этих предварительных тестов имеет условие сбоя, как указано выше, и сообщает «Конфигурирование неполно, произошли ошибки!».
(4) Я пытаюсь заставить эту сборку cmake cross compile работать со стандартными файлами cmake LLVM v3.7, поэтому я пытаюсь управлять cmake, используя только параметры командной строки. Это немного уродливо, и мне интересно, есть ли простой способ поместить все эти настройки в файл cmake. Одна из проблем этого подхода заключается в том, что я не знаком со всеми целями в LLVM, поэтому, если бы я попытался добавить библиотеки к целям, чтобы решить проблему с линковкой, я бы не знал, какие цели добавить их целиком. к. Я надеюсь, что в этом случае я смогу ударить по нему большим молотком и добавить их повсюду, надеясь, что они будут проигнорированы, если не будут использованы.
Я благодарю вас за терпение и за то, что вы прочитали все это ^^^.