Вопрос или проблема
Я пытаюсь скомпилировать curl
с поддержкой openssl
, и хотя я пробовал на протяжении нескольких часов, я все еще не могу понять, что я делаю не так.
Вот что я сделал:
-
скомпилировать
openssl
вот так:
cd /usr/local/install/openssl-1.0.2a
./config
make
make install -
попробовать скомпилировать
curl
cd /usr/local/install/curl-7.42.1
./configure –with-ssl=/usr/local/ssl/
make
и я получаю эту ошибку:
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against '.rodata' cannot be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
Я наконец нашел способ скомпилировать curl, вот что сработало для меня:
openssl:
./config -fPIC no-gost no-shared no-zlib
make depend
make
make install
curl:
./configure --with-ssl=/usr/local/ssl
make
make install
Ответ или решение
Компиляция cURL с поддержкой OpenSSL
Команда curl
является мощным инструментом для работы с URL, и его поддержка OpenSSL позволяет обеспечить безопасные HTTPS-соединения. В этом руководстве мы рассмотрим шаги, необходимые для успешной компиляции curl
с поддержкой OpenSSL, а также решим возникшие проблемы.
Шаг 1: Компиляция OpenSSL
Перед тем как начать, убедитесь, что у вас установлены все необходимые зависимости, такие как инструменты для сборки (make
, gcc
, и др.). После этого выполните следующие команды для сборки OpenSSL:
cd /usr/local/install/openssl-1.0.2a
./config -fPIC no-gost no-shared no-zlib
make depend
make
make install
Обратите внимание на следующие моменты:
- Флаг
-fPIC
позволяет компилятору генерировать код с поддержкой позиционной независимости, что критично для создания разделяемых библиотек. - Параметры
no-shared
иno-zlib
исключают создание динамической библиотеки и поддержкуzlib
, соответственно, если они вам не нужны.
Шаг 2: Компиляция cURL
Теперь, когда OpenSSL успешно собран, перейдите к компиляции curl
:
cd /usr/local/install/curl-7.42.1
./configure --with-ssl=/usr/local/ssl
make
make install
- Параметр
--with-ssl
указывает путь к установленной библиотеке OpenSSL.
Возможные проблемы и их решения
Если вы столкнулись с ошибкой вида:
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against '.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
Это указывает на то, что статическая библиотека OpenSSL была скомпилирована без поддержки позиции независимых кодов (PIC). В этом случае вам необходимо повторить процесс сборки OpenSSL с флагом -fPIC
.
Заключение
Следуя представленным шагам, вы сможете успешно сконфигурировать и скомпилировать curl
с поддержкой OpenSSL. Если у вас все еще возникают сложности, убедитесь, что все пути указаны правильно и что вы использовали необходимые параметры конфигурации при сборке OpenSSL. Компиляция с правильными флагами и настройками — ключ к успешному завершению задачи.
Такой подход гарантирует, что ваш курс на внедрение безопасных решений будет успешно выполнен, а также позволит вам лучше контролировать процесс сборки и настройки программного обеспечения.