Ho la mia installazione OpenSSL in una posizione non standard (/my/path
per questo esempio) e voglio che Python 3.4 lo costruisca contro quando lo compilo contro il sorgente. Quello che ho provato è questo (directory abbreviato)Come si compila Python 3.4 con OpenSSL personalizzato?
CPPFLAGS="-I/my/path/include -I/my/path/include/openssl" ./configure --prefix=/my/path/
Ho provato anche con C_INCLUDE_PATH
e percorsi di due punti separati.
Poi, corro make
e ottenere questo:
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
che sta cercando SSL_get0_next_proto_negotiated
, ma che è certamente definita:
$ 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,
io non sono sicuro di quello che sto facendo male, qualche idea?
Avete i file '/ mio/percorso/lib/libssl.so' e/o'/mio/percorso/lib/libcrypto.so'? – rodrigo
Dai un'occhiata a http://hg.python.org/cpython/file/9e55089aa505/setup.py per la logica che trova l'include ... – schlenk
Grazie per quel link, lo verificherò –