Я начинаю с написания своих собственных инструментов лязга.Вот шаги, которые я выполнил до сих пор:
- Извлечен сборка релиза llvm 7.0
- Изучен сборка релиза clang 7.0
Построен clang и llvmиспользуя ниндзя со следующими флагами (он постоянно зависал на мне без них)
-DLLVM_USE_LINKER=gold
-DLLVM_PARALLEL_LINK_JOBS=1
-DLLVM_LINK_LLVM_DYLIB=true
-DLLVM_USE_SPLIT_DWARF=ON
-DBUILD_SHARED_LIBS=ON
Установленный лязг
Теперь я хочу установить Clang в качестве собственного компилятора.Поэтому я установил эти флаги в конфигурационном файле, используя 'ccmake ../llvm'.Я не уверен, что это было правильно, хотя?Теперь, когда я пытаюсь собрать clang, он говорит, что обнаружен линкер GNU ld.Как я могу сбросить файл конфигурации и изменить компоновщик, чтобы он работал быстрее?У меня 8 ГБ ОЗУ.
Во-вторых, придется ли мне снова и снова собирать clang каждый раз, когда я пишу инструмент?Как бы это заняло 3-4 часа каждый раз?
Обновление Как подсказал sandthorn в комментариях, я ограничил параллельные задания до 1 с помощью ninja -j 1
.Однако сборка снова не удалась со следующей ошибкой:
[3840/4138] Linking CXX shared library lib/libLTO.so.7
FAILED: lib/libLTO.so.7
: && /usr/bin/c++ -fPIC -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=gold -Wl,-O3 -Wl,--gc-sections -Wl,--version-script,/home/tehreem/clang-llvm/build/tools/lto/LTO.exports -shared -Wl,-soname,libLTO.so.7 -o lib/libLTO.so.7 tools/lto/CMakeFiles/LTO.dir/LTODisassembler.cpp.o tools/lto/CMakeFiles/LTO.dir/lto.cpp.o -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVM-7.so && :
И после этого есть около 100 других неопределенных ссылочных ошибок.