Как настроить clang для использования компоновщика arm-none-eabi

Я пытаюсь настроить последнюю версию clang (6.0) для использования линкера arm-none-eabi вместо ld.lld, но clang всегда все игнорирует и продолжает запрашивать ld.lld. Я пытаюсь построить для cortex-m3 (плата lpx1769). Как заставить clang использовать нужный мне компоновщик.

-fuse-ld=ld также не работает, поэтому clang больше не позволяет использовать любой другой компоновщик?


person Kyriakos    schedule 21.11.2017    source источник
comment
создайте свой make-файл и вызывайте инструменты индивидуально clang, opt, llc, ld. llc теперь может создавать объект (напрямую?), поэтому вам больше не нужно вызывать as.   -  person old_timer    schedule 21.11.2017
comment
Спасибо за ваш ответ. Я настраиваю и создаю набор тестов и хочу избежать каких-либо хакерских решений. Наконец-то я нашел, как это сделать с помощью флага: -fuse-ld=path/to/linker-to-be-used   -  person Kyriakos    schedule 24.11.2017
comment
извините, что вы думаете, что использование make-файлов и доступных инструментов является хакерским. что вы обнаружите со временем с llvm/clang, так это то, что эти параметры командной строки приходят и уходят. как только вы найдете один неясный, они меняют его... так что я думаю, что это соответствует вашему определению хакерства...   -  person old_timer    schedule 25.11.2017
comment
На самом деле ты прав! Это действительно так для llvm/clang. Я рассмотрю ваше решение на долгосрочную перспективу! Благодарю вас!   -  person Kyriakos    schedule 26.11.2017


Ответы (1)


Итак, ответ заключался в использовании флага:

-fuse-ld=путь/к/линкеру, который будет использоваться

Помните, что если вы передадите этот флаг в clang, это вызовет предупреждение о том, что clang не будет использовать этот флаг (подойдет только этап компоновщика). Таким образом, если вы компилируете с параметром -Werror, предупреждение будет преобразовано в ошибку.

Более того, поскольку вы выполняете кросс-компиляцию, вероятно, вам потребуется сообщить компоновщику, где найти необходимые библиотеки для конкретной цели, используя параметр -L. Смотрите это для получения дополнительной информации:

https://clang.llvm.org/docs/CrossCompilation.html

person Kyriakos    schedule 24.11.2017