autotools ビルド システムを使用してソフトウェアを LLVM ビットコードにコンパイルしたいと考えています。つまり、最後に取得する実行可能ファイルを、実際のマシン コードではなく LLVM ビットコードにしたいと考えています。
(目標は、プログラム全体で LLVM ビットコード分析ツールを実行できるようにすることです。)
スクリプトCC="clang -emit-llvm -use-gold-plugins"
のバリアントを指定しようとしましたが、役に立ちませんでした。configure
常に何かがうまくいかないことがあります (たとえば、パッケージ.a
が静的ライブラリをビルドし、リンカーによって拒否されるなど)。
それを行う正しい方法は、LLVMビットコードをクロスコンパイルのターゲットにすることだと思います。で設定されますが--host=
、そのような標準的なターゲットはありません (Knuth の MMIX のターゲットはありますが)。
これまでのところ、手動でCC="clang -emit-llvm -use-gold-plugins"
リンク行をコンパイルして実行するなどのクラッジを使用してきました(llvm-ld
またはを使用)。llvm-link
これは、 などの単純なパッケージで機能しますgrep
。
.a
堅牢で、中間ファイルや中間ターゲットがある場合を含め、すべてではないにしてもほとんどの構成スクリプトで機能する方法が必要です。