2017-12-16 10 views
0

gcc 4.8.5ツールチェーンを使用してCentOS 7にlibcrypto.so.1.0.0をビルドしようとしています。私は以下のエラーが出てきて、私は何をするべきか明確ではない。gcc 4.8.5ツールチェインでlibcrypto.soを構築する方法

/usr/bin/ld:libcrypto.a(e_gost_err.o):再配置共有オブジェクトを作成するときに `.data 'に対するR_X86_64_32を使用することはできません。 -fPICで再コンパイルしてください

ご意見はありますか?

[[email protected] openssl-1.0.0s]$ cat /etc/centos-release 
CentOS Linux release 7.4.1708 (Core) 

[[email protected] openssl-1.0.0s]$ gcc --version 
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 
Copyright (C) 2015 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

[[email protected] openssl-1.0.0s]$ make libcrypto.so.1.0.0 
make[1]: Entering directory `/home/user/src/openssl/openssl-1.0.0s' 
make[2]: Entering directory `/home/user/src/openssl/openssl-1.0.0s' 
/usr/bin/ld: libcrypto.a(e_gost_err.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC 
libcrypto.a(e_gost_err.o): error adding symbols: Bad value 
collect2: error: ld returned 1 exit status 
make[2]: *** [link_a.gnu] Error 1 
make[2]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s' 
make[1]: *** [do_linux-shared] Error 2 
make[1]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s' 
make: *** [libcrypto.so.1.0.0] Error 2 
[[email protected] openssl-1.0.0s]$ 
+0

設定フラグに 'shared'を追加します。 OpenSSL wikiの[コンパイルとインストール](https://wiki.openssl.org/index.php/Compilation_and_Installation)も参照してください。またはLinux&Unix [INSTALL](https://github.com/openssl/openssl/blob/master/INSTALL)ファイルを参照してください。一度設定/ビルドされているので、前のビルドからすべての成果物をきれいにするには 'makecleclean'を行ってください。 – jww

答えて

-1

ここでエラーは多かれ少なかれ、-fPICで再コンパイルしてください。したがってCFLAGS-fPICが含まれていることをご確認ください(例:CFLAGS=-fPIC make ...)。 根本的な問題は、あなたが(おそらく意図的に)リロケータブルコードとリロケータブルコードを混ぜようとしていることです。

+0

奇妙なことに...私はmakefileのcflagsをチェックし、-fPICは既にそこにありました。だから、私はきれいにして、-fPICオプションが渡されていることを確認し、.soがうまく構築されていることを確認しました。私は何らかの形で以前の非リロケータブルオブジェクトファイルから動作するようになる以前に、クリーンなステップを逃してしまったに違いありません。ありがとう。 – Denis

関連する問題