1

私は Gentoo を初めて使用し、CMake を使用して TexGen ( http://texgen.sourceforge.net/index.php/Main_Page ) と呼ばれる 3D モデリング プログラムをインストールしようとしていますが、エラーが発生し続けます。

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

これは次のステップで発生します。

[ 80%] Linking CXX shared module ../_Renderer.so

cmakeのオプションファイルに -fPIC フラグをつけていろいろ調べてみましたが、結果に変化はありませんでした。私が言ったように、私は Linux と Gentoo にはまったく新しい (数週間程度) ので、どんな助けも大歓迎です。

4

2 に答える 2

0

実際、Gentoo には CMake ベースのプロジェクトを構築するための eclass(es) があります (「参考文献」を参照/usr/portage/cmake*.eclass)。そして私の知る限り、パッケージオプションをあなたのものに置き換えます(正確には、新しい構成タイプを追加します)、で構成されます/etc/portage/make.conf(またはpaludis/etc/paludis/bashrcを使用する場合)。したがって、パッケージ ebuild の「ハッキング」が役に立たないことは不思議ではありません。CMakeLists.txt

したがって、最も簡単な方法は、代わりにそのオプションを Gentoo 設定に追加することです。個人的には、この方法を使用してシステムにライブラリを構築boostします (私のプロジェクトの一部では、boost の静的ライブラリを動的ライブラリにリンクする必要があります)。はい、私は を使用していますpaludisが、emergeおそらく同様の機能 (パッケージごとのコンパイラ オプションを設定する方法) を持っています。

もう 1 つの方法は、( 経由でCMAKE_<LANG>_FLAGS)コンパイラ オプションを直接「ハッキング」する代わりに、 CMAKE_POSITION_INDEPENDENT_CODEを調べます。これにより、適切なコンパイラ オプションが追加されます。おそらく、キャッシュを使用した eclass の操作はこの設定に影響しません。

于 2016-06-17T19:27:35.310 に答える
0

すべてのインスタンスを最初から再インストールするだけで(ffmpegをインストールするために)機能するようになり$ ./configureました$ ./configure --enable-shared(最初に、前回の試行からの.soファイルを含むすべてのフォルダーとファイルを必ず削除してください)。

どうやらこれはhttps://stackoverflow.com/a/13812368/10593190のため機能します。

于 2020-07-04T08:01:57.420 に答える