В настоящее время меня интересует ARM в целом и, в частности, цели iphone/android. Но я просто хочу узнать больше о кланге, поскольку он чувствует, что будет играть важную роль в ближайшие годы.clang: как список поддерживаемых целевых архитектур?
Я попытался
clang -cc1 --help|grep -i list
clang -cc1 --help|grep arch|grep -v search
clang -cc1 --help|grep target
-triple <value> Specify target triple (e.g. i686-apple-darwin9)
Я знаю, лязг имеет -triplet параметр, но как я могу перечислить все возможные значения для него? Я обнаружил, что clang очень отличается от gcc в отношении перекрестного компиляции, в мире GCC у вас должен быть отдельный двоичный код для всего, например PLATFORM_make или PLATFORM_ld (i * 86-pc-cygwin i * 86 - * - linux-gnu и т. Д. http://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS)
в мире clang, это всего лишь один двоичный файл (как я читал на некоторых форумах). Но как мне получить список поддерживаемых целей? И если моя цель не поддерживается на моем дистрибутиве (linux/windows/macos/whatever), как я могу получить тот, который поддерживает больше платформы?
если я SVN последнего лязга так:
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
буду я получаю большинство платформ? Похоже, что Кланг не был построен с перекрестным компиляцией сразу, но поскольку он основан на llvm, он должен быть очень кросс-дружественным в теории? Спасибо!
не полный ответ, но ооо --version даст вам Мишени –
Я думаю, что вы» Придется взглянуть на источник, чтобы увидеть троек.И, как я понимаю, стандартная сборка clang будет включать базовую поддержку кросс-компиляции. Базовая поддержка только превращает код в объектные файлы (если интегрированный ассемблер поддерживает тройку, в противном случае вам придется брать файлы .s). Вам нужно будет поставлять заголовки, библиотеки, компоновщик (до тех пор, пока не будет работать lld) и т. Д. – bames53
Хотя установка по умолчанию имеет только clang и clang ++ исполняемые файлы, как и другие платформы, вы можете создавать копии или жесткие ссылки из них с помощью троек и квадроциклов закодированных в именах. clang ++ и clang на самом деле являются просто копиями друг друга, он проверяет имя исполняемого файла, чтобы увидеть, как обрабатывать ввод. –