64-разрядная версия Linux / Ubuntu и openssl (не удалось прочитать символы: Плохое значение)

Обычно я много ищу и много читаю, чтобы исправить свои проблемы, но для этой конкретной проблемы это было довольно непроизводительно.

Я запускаю 64-битный сервер Linux Ubuntu, на котором я установил стек LAMP, и имел проблемы с поддержкой libcurl, не поддерживающей SSL, в то время как двоичный файл ОС имеет поддержку SSL. PHP просто не может его прочитать. Когда я искал решения и пытался сделать следующее, чтобы включить поддержку ssl при установке PHP, у меня возникла проблема.

./configure .... --with-openssl ... .... /usr/bin/ld: ext/standard/.libs/info.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ext/standard/.libs/info.o: could not read symbols: Bad value collect2: error: ld returned 1 exit status make: *** [libphp5.la] Error 1 

Итак, это внезапно прекратилось. Я пробовал делать –enable-shared -without-pic аргументы безрезультатно.

Solutions Collecting From Web of "64-разрядная версия Linux / Ubuntu и openssl (не удалось прочитать символы: Плохое значение)"

Ладно, извините за неправильный поиск в самой SO. Ответ на эту проблему дал один из связанных вопросов. перемещение R_X86_64_32 против ошибки локального символа

Все, что мне нужно было сделать, это сделать новую установку openssl на этот раз с помощью опции enable-shared во время настройки

 ./config enable-shared 

Затем мне пришлось сделать новую установку cURL

 ./configure --with-ssl=/usr/local/ssl --with-zlib 

Затем мне пришлось сделать новую установку PHP

 ./configure .... --with-openssl --with-curl .... 

.. и это сделал. Расширение PHP cURL поддерживает SSL.

В качестве более общего ответа обычно возникает проблема, когда библиотека, которую вы пытаетесь скомпилировать, ищет общую библиотеку зависимости, но сама зависимость была построена только с поддержкой статической библиотеки.

Способ устранения проблемы состоял в том, чтобы перекомпилировать зависимость с поддержкой разделяемой библиотеки, как правило, путем указания флага –enable-shared для скрипта configure.

также выполните команду,

 make clean