2010-03-29 2 views
22

В CentOS 5.4 OpenSSL компилируется без опции «shared». Но когда я прошел этот вариант компиляции завершается с:Скомпилировать OpenSSL с опцией 'shared'?

/USR/BIN/LD: libcrypto.a (x86_64-gcc.o): перемещение R_X86_64_32 против `местного символа» не могут быть использованы при принятии общий объект; перекомпилировать с -fPIC

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

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

Благодаря

+3

Вы «чистили» между запуском без совместного использования и запуска его совместно? Что такое версия OpenSSL? – NUXI

ответ

1

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

+3

Ну, у меня все еще такая же проблема с 1.0.0j – arved

+0

@arved Подтверждено на Ubuntu 16.04.1 LTS x64 с CMake v2.8: использование '-fPIC shared' жалуется на' libcrypto.a', не созданное с '-fPIC' , – DevNull

21

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

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

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

или

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

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

+6

+1 - Встречалась сегодня в совершенно другом проекте и может подтвердить, что это работает отлично. Просто запомните «make clean», если вы уже пытались создать его без этой правильной командной строки! – ZXcvbnM

13

Существует вариант -fXXX, что вы можете перейти к конфигу, так что вы можете сделать это с:

./config -fPIC shared 
+5

Обязательно «очистите» перед добавлением -fPIC, если вы раньше пытались построить здание. – jfritz42

+1

им нужен сценарий Perl 2KLOC, чтобы собрать несколько параметров командной строки, и они не могут даже получить его правильно, по-видимому, самой популярной платформой (Linux x64). Я уверен, что здесь есть урок. – cap

+0

Yup, это называется использование GNU autoconf, как и все остальные! – Gargoyle

0

Вот как я построил 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 
Смежные вопросы