1

LLVM IR で最終的なバイナリを生成するために、LLVM で apache2 をコンパイルしようとしています。

コンパイルとリンクで flto オプションを使用し、clang を介して「also-emit-llvm」をリンカーに渡しました。ほとんどのステップでうまくいくようですが、2つの懸念がありました

1) 以前、私は LLVM 3.6 を使用しました。そのゴールド プラグインは also-emit-llvm を受け入れませんが、emit-llvm のみを持ち、基本的には elf または llvm のみを出力します。Autotoolsビルドシステムが気に入らないもの。configure および make スクリプトにはバイナリが必要ですが、私は llvm が必要です。これに対する解決策はありますか?

2) そこで、LLVM 3.5.2 に移行しました。ビルド プロセスはうまくいき、httpd.bc と httpd elf の両方のバイナリを生成できますが、リンカーはモジュールのリンクを望んでいません (バイナリのリンクはできました) 具体的には、このエラーが発生します

`

/usr/share/apr-1.0/build/libtool --silent --mode=link /home/rbhatia/Desktop/llvm-newbuild/bin/clang  -pthread  -flto -o mod_authn_file.la -rpath /home/rbhatia/Desktop/httpd-2.4.12/llvm/modules -module -avoid-version  mod_authn_file.lo 
/usr/bin/ld: error: .libs/mod_authn_file.o:1:3: invalid chaenter code hereracter
/usr/bin/ld: error: .libs/mod_authn_file.o:1:3: syntax error, unexpected $end
/usr/bin/ld: error: .libs/mod_authn_file.o: not an object or archive
collect2: error: ld returned 1 exit status

`

mod_authn_file.o は、llvm-dis で逆アセンブルできる有効な LLVM IR ファイルであることがわかります。また、このステップの直前に、リンカーは httpd と httpd.bc をリンクできます。

エラーの内容について何か助けはありますか?

4

1 に答える 1

1

を見てみましょう

https://github.com/SRI-CSL/whole-program-llvm

このツールを使用して、非常に大きなプロジェクトをビットコードにビルドします。これまでで最大のものは FreeBSD 10.0 だったので、サイズは通常問題になりません。

私たちの travis ビルド チェックは、実際にはチュートリアルと同様に apache です。それが役立つことを願っています。

于 2016-07-26T23:24:07.903 に答える