23

RHEL 5でQGIS用の Python 2.6 をビルドしようとしています。QGIS の作成中に次のエラーが発生します。

Linking CXX shared library libqgispython.so
/usr/bin/ld: /usr/local/lib/python2.6/config/libpython2.6.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/python2.6/config/libpython2.6.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [src/python/libqgispython.so.1.0] Error 1
make[1]: *** [src/python/CMakeFiles/qgispython.dir/all] Error 2
make: *** [all] Error 2

このエラーからわかることは、Python 2.6 を何らかのフラグでビルドする必要があるということです-fPIC。OK、configure.inファイルで見つけましたが、いくつかの条件をチェックし、それらの条件に基づい-fPICCCSHAREDフラグに割り当てます。

私がしたことは、すべての条件がチェックされた後、次の行を意図的にCCSHAREDas として使用するために追加したこと-fPICです。

CCSHARED="-fPIC";

しかし、それはうまくいきませんでした..

CCSHAREDとして設定したいことを構成中に指定する方法は-fPIC?

4

9 に答える 9

14

このエラーが発生したとき、次のことがうまくいきました。

make clean
./configure CFLAGS=-fPIC CXXFLAGS=-fPIC
于 2016-12-19T20:50:47.590 に答える
6

-fPICafter CC= gcc -pthread、つまりCC= gcc -pthread -fPICMakefile に追加することで機能しました。

于 2009-03-12T01:17:55.803 に答える
2

他の場所で説明したように、-enable-sharedを指定してconfigureを実行すると、コンパイラフラグに-fPICが含まれるようになります。ただし、「make -j8」などを使用して並列ビルドを実行しようとすると、「シンボルを読み取れませんでした」というエラーが表示される場合があります。RHEL 5.2でも同じエラーが発生しましたが、make呼び出しから「-j8」を削除した場合にのみエラーが発生しました...

于 2009-06-22T07:47:22.633 に答える
0

./config --prefix=/software/bea/openssl/100c --openssldir=/software/bea/openssl/100c/ssl shared -fPIC で openssl を再構築します。

そして、それもうまくいきません。/usr/bin/ld: リンクが失敗しました。以前は make ファイルのリンク部分を変更していましたが、これは gcc -Wall -shared -o pwutil.so asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schedule.o md5c.o pdg2_ecb.o pwutils.o random_data でした。 .o hexutils.o des3crypt.o blowcrypt.o /software/bea/openssl/1.0.0c/lib/libcrypto.a

共有オプションと - fPIC でリビルドした後、libcrypto.a を libcrypto.so に変更しました。

gcc -Wall -shared -o pwutil.o asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schedule.o md5c.o pdg2_ecb.o pwutils.o random_data.o hexutils.o des3crypt.o blowcrypt.o /ソフトウェア/bea/openssl/1.0.0c/lib/libcrypto.so

そしてそれは働いた

于 2012-04-19T06:08:17.060 に答える
0

以下は、configure に fPIC を渡す例です。

于 2014-08-31T21:18:47.603 に答える