Я хотел бы скомпилировать программное обеспечение, использующее систему сборки autotools, в биткод LLVM; то есть, я хотел бы, чтобы исполняемые файлы, полученные в конце, были бит-кодом LLVM, а не фактическим машинным кодом.
(Цель состоит в том, чтобы иметь возможность запускать инструменты анализа кода бит LLVM для всей программы.)
Я попытался указать CC="clang -emit-llvm -use-gold-plugins"
и варианты configure
script, но безрезультатно. Всегда что-то происходит не так (например, пакет создает статические библиотеки .a
, на которые отказался компоновщик).
Мне кажется, что правильный способ сделать это будет заключаться в том, что бит-код LLVM должен быть целью кросс-компиляции. для установки с помощью --host=
, но нет такой стандартной цели (даже если есть цель для Knuth MMIX).
До сих пор я использовал kludges, например компиляцию с CC="clang -emit-llvm -use-gold-plugins"
и бегущие строки ссылок (используя llvm-ld
или llvm-link
) вручную. Это работает для простых пакетов, таких как grep
.
Я хотел бы, чтобы метод, который был устойчивым и работал с большинством, если не все, настраивал сценарии, в том числе, когда есть промежуточные файлы .a
или промежуточные цели.