2015-01-31 2 views
0

Я использовал самосозданный Python для Solaris в течение многих лет без каких-либо проблем. Недавно мне нужно было установить более новую версию openssl, потому что существующая версия openssl (включенная в Solaris 10) больше не была полностью совместима с последними протоколами безопасности (т. Е. Я не могу ssh из окна Solaris).Не удалось создать Python на Solaris 10

Итак, я установил более новую версию openssl, сначала openssl-1.0.1l, а позже openssl-1.0.2. Используя новую версию openssl, я могу снова удалить ssh из окна Solaris.

Но Python puked, когда я запускаю скрипт Python с netowrk-x, что было хорошо с моей старой средой.

Я перекомпилировал Python (2.7.9) и выяснил, что я не могу создавать модули _hashlib и _ssl.

Проблема была довольно странной. Соответствующее сообщение об ошибке было:

ld: fatal: relocations remain against allocatable but non-writable section 

(обобщённом версия журнала компиляции прилагается в конце текста)

Две библиотеки файлов, libssl.a и libcrypto.a, которые были сгенерированы в течение OpenSSL установка не создается должным образом (по крайней мере, для Solaris env).

Однако, я действительно не знаю, как исходить отсюда. Может ли кто-нибудь помочь мне решить эту проблему? Любые предложения были бы весьма признательны.

Спасибо! Aki-

% make 
running build 
running build_ext 
warning: ldd: /usr/local/lib/libreadline.so: is not executable 
building dbm using ndbm 
building '_ssl' extension 
gcc -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -I/usr/local/include -I/home/neko/gnu/Python-2.7.9/Include -I/home/neko/gnu/Python-2.7.9 -c /home/neko/gnu/Python-2.7.9/Modules/_ssl.c -o build/temp.solaris-2.10-sun4u.32bit-2.7/home/neko/gnu/Python-2.7.9/Modules/_ssl.o 
gcc -shared build/temp.solaris-2.10-sun4u.32bit-2.7/home/neko/gnu/Python-2.7.9/Modules/_ssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.solaris-2.10-sun4u.32bit-2.7/_ssl.so 
Text relocation remains referenced 
    against symbol   offset in file 
<unknown>  0x1198  /usr/local/ssl/lib/libssl.a(s3_lib.o) 
<unknown>  0x119c  /usr/local/ssl/lib/libssl.a(s3_lib.o) 
<unknown>  0x11a0  /usr/local/ssl/lib/libssl.a(s3_lib.o) 

.... 

BN_set_bit  0x1a90  /usr/local/ssl/lib/libcrypto.a(bn_gf2m.o) 
BN_set_bit  0x1c44  /usr/local/ssl/lib/libcrypto.a(bn_gf2m.o) 
<unknown>  0x4   /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0xc   /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x20  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x1b0  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x1c0  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x1cc  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x464  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x46c  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x4f0  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
<unknown>  0x4f4  /usr/local/ssl/lib/libcrypto.a(bn_ctx.o) 
ld: fatal: relocations remain against allocatable but non-writable sections 
collect2: ld returned 1 exit status 
building '_hashlib' extension 
gcc -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -I/usr/local/include -I/home/neko/gnu/Python-2.7.9/Include -I/home/neko/gnu/Python-2.7.9 -c /home/neko/gnu/Python-2.7.9/Modules/_hashopenssl.c -o build/temp.solaris-2.10-sun4u.32bit-2.7/home/neko/gnu/Python-2.7.9/Modules/_hashopenssl.o 
gcc -shared build/temp.solaris-2.10-sun4u.32bit-2.7/home/neko/gnu/Python-2.7.9/Modules/_hashopenssl.o -L/usr/local/ssl/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.solaris-2.10-sun4u.32bit-2.7/_hashlib.so 
Text relocation remains referenced 
    against symbol   offset in file 
<unknown>  0x6a0  /usr/local/ssl/lib/libcrypto.a(tasn_fre.o) 
<unknown>  0x6a4  /usr/local/ssl/lib/libcrypto.a(tasn_fre.o) 
<unknown>  0x6a8  /usr/local/ssl/lib/libcrypto.a(tasn_fre.o) 

.... 


i2d_ASN1_TYPE 0x6dc  /usr/local/ssl/lib/libcrypto.a(a_strex.o) 
i2d_ASN1_TYPE 0x70c  /usr/local/ssl/lib/libcrypto.a(a_strex.o) 
i2d_ASN1_TYPE 0x8d0  /usr/local/ssl/lib/libcrypto.a(asn1_gen.o) 
i2d_ASN1_TYPE 0x4ac  /usr/local/ssl/lib/libcrypto.a(v3_conf.o) 
ld: fatal: relocations remain against allocatable but non-writable sections 
collect2: ld returned 1 exit status 
building 'dbm' extension 
gcc -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_NDBM_H -I. -IInclude -I./Include -I/usr/local/include -I/home/neko/gnu/Python-2.7.9/Include -I/home/neko/gnu/Python-2.7.9 -c /home/neko/gnu/Python-2.7.9/Modules/dbmmodule.c -o build/temp.solaris-2.10-sun4u.32bit-2.7 

.... 

Failed to build these modules: 
_curses   _curses_panel  _hashlib  _ssl 

ответ

0

Я сделал еще одну попытку найти решение и нашли кого-то решение отправил обратно в 2013 году: Опубликовано Том Kacvinsky: http://openssl.6102.n7.nabble.com/PIC-code-on-Sparc-Solaris-td47300.html

В сущности, вам нужно сделать две вещи:

(1) Запуск ./config с -fPIC

% ./config --prefix=<target_dir> no-shared -fPIC 

Это добавляет -fPIC (GE nerating позиции независимый код) GCC вариантов для компиляции библиотеки

(2) собран sparccpuid.S в положение независимого кода

% gcc -I... -D... -E sparcpuid.S > sparcpuid.s 
% as -V -Qy -s -xarch=v8plusa -K PIC -xcode=pic32 sparcpuid.s 

-xcode = PIC32 является секретным источником.

//

Следуя его указаниям, мне удалось построить Python с поддержкой hashlib Ssl. И моя программа python с сетью-x снова работает.

Я не знаю, было ли его решение оптимальным, но оно решило мою проблему. Я не знаю, почему дистрибутив openssl не включил его обходное решение (вероятно, из-за отсутствия тестовых примеров для проверки этой проблемы, ни один тестовый случай не работает, без проблем).

Я рад, что эксперт наткнулся на эту проблему передо мной.

Смежные вопросы