【发布时间】:2014-06-26 05:22:47
【问题描述】:
我在非标准位置安装了自己的 OpenSSL(在此示例中为 /my/path),并且我希望 Python 3.4 在针对源代码编译时构建它。我试过的是这个(目录缩写)
CPPFLAGS="-I/my/path/include -I/my/path/include/openssl" ./configure --prefix=/my/path/
我也尝试使用C_INCLUDE_PATH 和冒号分隔的路径。
然后,我运行 make 并得到这个:
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
它正在寻找SSL_get0_next_proto_negotiated,但这是最肯定的定义:
$ 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,
我不确定我做错了什么,有什么想法吗?
【问题讨论】:
-
你有
/my/path/lib/libssl.so和/或/my/path/lib/libcrypto.so的文件吗? -
查看hg.python.org/cpython/file/9e55089aa505/setup.py 查找包含的逻辑...
-
谢谢你的链接,我去看看
-
更正:我有 libssl.so,但它在 /my/path/lib64/libssl.so