我目前正在尝试自己构建一个Postgres版本,但是SSL支持方面存在一些问题。
我使用(针对Windows的交叉编译)配置项目
./configure --host=x86_64-w64-mingw32 --with-openssl --prefix=/home/fuchs/postgres-bin-9.6.12
但是我得到一个错误
checking for library containing gethostbyname_r... no
checking for library containing shmget... no
checking for inflate in -lz... yes
checking for library containing CRYPTO_new_ex_data... no
configure: error: library 'eay32' or 'crypto' is required for OpenSSL
我在互联网上搜索了一个解决方案,发现安装libssl-dev应该可以解决问题(似乎对某些人有所帮助)。我检查并已经安装了libssl-dev。
由于该错误实际上并未提及SSL,因此我搜索了eay32
和crypto
之类的库,并发现了一些已安装的,名为libcrypto++-dev
和类似包的软件包,但据我了解,libcrypto应该是其中的一部分ssl库的内容。
我检查了configure.in
的错误原因并找到了
if test "$with_openssl" = yes ; then
dnl Order matters!
if test "$PORTNAME" != "win32"; then
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
AC_CHECK_LIB(ssl, SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
else
AC_SEARCH_LIBS(CRYPTO_new_ex_data, [eay32 crypto], [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
AC_SEARCH_LIBS(SSL_new, [ssleay32 ssl], [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
fi
不幸的是,我几乎没有make,autoconf和这些构建工具的经验,但是据我了解,它只是在试图找到库ssl和crypto但不能。
所以我尝试显式添加include和lib目录
/configure --host=x86_64-w64-mingw32 --with-openssl --with-includes=/usr/include/openssl/ --with-libraries=/usr/lib/x86_64-linux-gnu/ PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/ --prefix=/home/fuchs/postgres-bin-9.6.12
但是它并没有改变任何东西,现在我没有主意了。我使用的是Kubuntu 18.04,几乎是全新安装,并尝试构建Postgres 9.6.12。