Ich habe meine eigene OpenSSL-Installation an einem nicht standardmäßigen Speicherort (/my/path
für dieses Beispiel) und ich möchte Python 3.4 gegen das erstellen, wenn ich es gegen Quelle kompiliere. Was ich versucht ist diese (Verzeichnisse abgekürzt)Wie kompiliere ich Python 3.4 mit benutzerdefinierten OpenSSL?
CPPFLAGS="-I/my/path/include -I/my/path/include/openssl" ./configure --prefix=/my/path/
ich auch mit C_INCLUDE_PATH
und Doppelpunkt getrennt Wege versucht.
Dann laufe ich make
und bekommen dies:
building '_ssl' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I./Include -I. -IInclude -I/my/path/include -I/my/path/include/openssl -I/usr/local/include -I/my/path/Python-3.4.0/Include -I/my/path/Python-3.4.0 -c /my/path/Python-3.4.0/Modules/_ssl.c -o build/temp.linux-x86_64-3.4/my/path/Python-3.4.0/Modules/_ssl.o
gcc -pthread -shared build/temp.linux-x86_64-3.4/my/path/Python-3.4.0/Modules/_ssl.o -L/my/path/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.4/_ssl.cpython-34m.so
*** WARNING: renaming "_ssl" since importing it failed: build/lib.linux-x86_64-3.4/_ssl.cpython-34m.so: undefined symbol: SSL_get0_next_proto_negotiated
Es ist für SSL_get0_next_proto_negotiated
suchen, aber das ist mit Sicherheit definiert:
$ grep SSL_get0_next_proto_negotiated /my/path/include/openssl/*
/my/path/include/openssl/ssl.h:void SSL_get0_next_proto_negotiated(const SSL *s,
Ich bin mir nicht sicher, was ich falsch mache, irgendwelche Ideen?
Haben Sie die Dateien '/ my/path/lib/libssl.so' und/oder'/my/path/lib/libcrypto.so'? – rodrigo
Werfen Sie einen Blick auf http://hg.python.org/cpython/file/9e55089aa505/setup.py für die Logik, die die Includes findet ... – schlenk
Danke für diesen Link, ich werde es überprüfen –