cmake сборка LLVM: HAVE_CXX_ATOMICS_WITHOUT_LIB тестовый сбой - PullRequest
0 голосов
/ 11 апреля 2019

Я получаю эту ошибку при попытке кросс-компиляции 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, поэтому, если бы я попытался добавить библиотеки к целям, чтобы решить проблему с линковкой, я бы не знал, какие цели добавить их целиком. к. Я надеюсь, что в этом случае я смогу ударить по нему большим молотком и добавить их повсюду, надеясь, что они будут проигнорированы, если не будут использованы.

Я благодарю вас за терпение и за то, что вы прочитали все это ^^^.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...