Подтвердить что ты не робот

Скомпилировать OpenSSL с опцией "shared"?

В CentOS 5.4 OpenSSL компилируется без опции "shared". Но когда я передал эту опцию, компиляция завершилась неудачей:

/usr/bin/ld: libcrypto.a(x86_64-gcc.o): перемещение R_X86_64_32 против "локального символа" не может использоваться при создании общего объекта; перекомпилировать с помощью -fPIC

Когда я пытаюсь: ./config shared CFLAGS=-fPIC, это не сработает.

Что я могу сделать, чтобы заставить OpenSSL скомпилироваться с опцией "shared"?

Спасибо

4b9b3361

Ответ 1

Такая же проблема здесь, НО обычно Makefiles будет рассматривать переменные среды для параметров компилятора или компоновщика.

Итак, если вы поместите параметр -fPIC перед вызовом configure script, он должен позаботиться об этом. Вы можете сделать это с помощью:

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

или

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

Это сработало для меня.

Ответ 2

Существует опция -fXXX, которую вы можете передать в config, чтобы вы могли сделать это с помощью

./config -fPIC shared

Ответ 3

OpenSSL версия 1.0 (опубликованная сегодня) отлично работает с общей опцией

Ответ 4

Вот как я построил 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