Процесс компиляции LLVM и LLD
Я пытался переключиться на LLVM, так как я хотел бы получить больше информации о всей сцене "разработчика программного обеспечения", и кажется, что сейчас LLVM - это будущее. Я собирал LLVM/Clang/LLD/compiler-rt/libcxx из исходного кода несколько раз сейчас, как с GNU/GCC, так и с LLVM/Clang.
Проблема возникает, когда я пытаюсь использовать только что скомпилированные компиляторы. Из того, что я вижу, clang
использует GNU LD вместо LLVM lld
, Это правда?
LLD, кажется, очень ограниченная программа от lld -help
вывод, но из того, что я прочитал, это так полнофункционально, как ld
, Я не могу найти документацию о том, как его использовать - кто-нибудь знает, где я могу найти какое-то всеобъемлющее руководство по нему?
Спасибо.
4 ответа
Проходить -fuse-ld=lld
лязгать, чтобы заставить его использовать lld для компоновки. К настоящему времени это в очень хорошей форме.
Вы можете пройти -v
или же -###
чтобы заставить его напечатать, какую команду компоновщика он запускает или будет выполнять.
Я знаю, что этот вопрос старый, но есть более новое решение:
Чтобы использовать компоновщик ld.lld при создании любой цели llvm, просто передайте-DLLVM_ENABLE_LLD=ON
в командной строке cmake.
//Use lld as C and C++ linker.
LLVM_ENABLE_LLD:BOOL=TRUE
Для других проектов cmake передайте:-DCMAKE_LINKER=/etc/bin/ld.lld
Команда LLVM говорит, что она готова к работе, потому что FreeBSD может многое компилировать и связывать с LLD.
Документацию по проекту LLD можно найти по http://lld.llvm.org/.
Это написано:
LLD является заменой линкерам GNU.
Он принимает те же аргументы командной строки и сценарии компоновщика, что и GNU.
Таким образом, вы можете использовать те же аргументы, что и GNU LD.
На данный момент руководства нет, и, в зависимости от платформы, вы можете работать достаточно хорошо. Тем не менее, если бы lld был "готов к производству", мы бы переключили clang на его использование по умолчанию для различных платформ. Его еще нет, поэтому я бы не советовал вам использовать его для повседневной разработки.