web-dev-qa-db-ja.com

'shared'オプションを使用してOpenSSLをコンパイルしますか?

CentOS 5.4では、OpenSSLは「共有」オプションなしで正常にコンパイルされます。しかし、そのオプションを渡すと、コンパイルは次のように失敗します。

/ usr/bin/ld:libcrypto.a(x86_64-gcc.o):「ローカルシンボル」に対する再配置R_X86_64_32は、共有オブジェクトを作成するときに使用できません。 -fPICで再コンパイルします

私が試してみると:./config shared CFLAGS=-fPICそれは機能しません。

OpenSSLを「共有」オプションでコンパイルするにはどうすればよいですか?

ありがとう

27
Petre Maierean

ここでも同じ問題がありますが、通常、Makefileはコンパイラまたはリンカオプションの環境変数を考慮します。

したがって、-fPICオプションを配置する場合before configureスクリプトを呼び出すと、それが処理されるはずです。あなたはそれを行うことができます:

CFLAGS=-fPIC ./config shared --prefix=/your/path

または

export CFLAGS=-fPIC
./config shared --prefix=/your/path

それは私のために働いた。

27
AkiRoss

オプションがあります-fXXX configに渡すことができるので、次のように実行できます。

./config -fPIC shared
18
marcinH

OpenSSLバージョン1.0(本日公開)は共有オプションで正常に動作します

1
Peter

共有ライブラリを使用してOpenSSLを構築した方法は次のとおりです。私はクロスコンパイラを使用しているので、ほとんど使用しないものを指定していることに注意してください。

# hop into the downloads folder
cd ~/Downloads
# get the branch of openssl you want
git clone -b OpenSSL_1_0_2-stable --single-branch https://github.com/openssl/openssl.git
# make an installation directory
mkdir openssl-install
# go into the cloned openssl directory
cd openssl
# absolute paths needed for the configure
# the "-fPIC -mhard-float" are CFLAGS specific to my project
# the "-shared" is what creates the .so files
# find your desired configuration with `./Configure LIST`
./Configure linux-mips32 --prefix=/home/myusername/Downloads/openssl-install --openssldir=/system/ssl -fPIC -mhard-float -shared
# run the make file (with my specific compiler)
make CC=mips-linux-gnu-gcc RANLIB=mips-linux-gnu-ranlib LD=mips-linux-gnu-ld MAKEDEPPROG=mips-linux-gnu-gcc PROCESSOR=MIPS
1
Phlox Midas