无法在 RHEL 7.3 上构建最新的 libcurl
Can't build latest libcurl on RHEL 7.3
修复此编译错误的正确方法是什么,以便我可以在 RHEL 7.3 上安装最新的 libcurl?
我已经能够获取最新的 openssl,构建并安装它。 OpenSSL 1.1.1-dev xx XXX xxxx
现在由 openssl version
报告。最近的卷曲是 cloned/pulled 来自 https://github.com/curl/curl.git
。这是我正在使用的 bash 脚本片段:
CD=$(pwd)
CPPFLAGS="-I$CD/zlib -I$CD/openssl -I$CD/openssl/include"
LDFLAGS="-L$CD/zlib -L$CD/openssl"
LIBS="-ldl"
cd curl
./buildconf
./configure --disable-shared --with-zlib --with-ssl
make
make install
运行 带有 sudo
、make
的批处理完成且没有错误。 make install
产生这个:
CC libcurl_la-openssl.lo
vtls/openssl.c: In function 'Curl_ossl_seed':
vtls/openssl.c:279:5: error: implicit declaration of function 'RAND_egd' [-
Werror=implicit-function-declaration]
int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
^
cc1: some warnings being treated as errors
make[2]: *** [libcurl_la-openssl.lo] Error 1
make[2]: Leaving directory `/home/john/curl/lib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/john/curl/lib'
make: *** [all-recursive] Error 1
编辑:更新为更清洁的版本
以下是使用最新的 openssl
构建 curl
的步骤
CD=$(pwd)
echo Setting up openssl
if [ ! -d openssl ]; then
git clone https://github.com/openssl/openssl.git
cd openssl
else
cd openssl
git pull
fi
# you may not need -Wl,--enable-new-dtags but it works for me
./config -Wl,--enable-new-dtags --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
make depend
make
sudo make install
cd ..
lib=zlib-1.2.11
echo Setting up zlib
if [ ! -d zlib ]; then
wget http://zlib.net/$lib.tar.gz
tar xzvf $lib.tar.gz
mv $lib zlib
fi
cd zlib
./configure
make
cd ..
echo Setting up curl ...
CD=$(pwd)
if [ ! -d curl ]; then
git clone https://github.com/curl/curl.git
cd curl
else
cd curl
git pull
fi
cd curl
./buildconf
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig LIBS="-ldl" ./configure --with-
zlib=$CD/zlib --disable-shared
make
# I use local curl build without installing it
# make install
cd ..
我真诚地希望这对其他人有帮助。
RAND_egd() 不再是默认 OpenSSL 安装的一部分。参见 this git commit。您可以通过在配置命令中添加 enable-egd
来解决问题。
修复此编译错误的正确方法是什么,以便我可以在 RHEL 7.3 上安装最新的 libcurl?
我已经能够获取最新的 openssl,构建并安装它。 OpenSSL 1.1.1-dev xx XXX xxxx
现在由 openssl version
报告。最近的卷曲是 cloned/pulled 来自 https://github.com/curl/curl.git
。这是我正在使用的 bash 脚本片段:
CD=$(pwd)
CPPFLAGS="-I$CD/zlib -I$CD/openssl -I$CD/openssl/include"
LDFLAGS="-L$CD/zlib -L$CD/openssl"
LIBS="-ldl"
cd curl
./buildconf
./configure --disable-shared --with-zlib --with-ssl
make
make install
运行 带有 sudo
、make
的批处理完成且没有错误。 make install
产生这个:
CC libcurl_la-openssl.lo
vtls/openssl.c: In function 'Curl_ossl_seed':
vtls/openssl.c:279:5: error: implicit declaration of function 'RAND_egd' [-
Werror=implicit-function-declaration]
int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
^
cc1: some warnings being treated as errors
make[2]: *** [libcurl_la-openssl.lo] Error 1
make[2]: Leaving directory `/home/john/curl/lib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/john/curl/lib'
make: *** [all-recursive] Error 1
编辑:更新为更清洁的版本
以下是使用最新的 openssl
curl
的步骤
CD=$(pwd)
echo Setting up openssl
if [ ! -d openssl ]; then
git clone https://github.com/openssl/openssl.git
cd openssl
else
cd openssl
git pull
fi
# you may not need -Wl,--enable-new-dtags but it works for me
./config -Wl,--enable-new-dtags --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
make depend
make
sudo make install
cd ..
lib=zlib-1.2.11
echo Setting up zlib
if [ ! -d zlib ]; then
wget http://zlib.net/$lib.tar.gz
tar xzvf $lib.tar.gz
mv $lib zlib
fi
cd zlib
./configure
make
cd ..
echo Setting up curl ...
CD=$(pwd)
if [ ! -d curl ]; then
git clone https://github.com/curl/curl.git
cd curl
else
cd curl
git pull
fi
cd curl
./buildconf
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig LIBS="-ldl" ./configure --with-
zlib=$CD/zlib --disable-shared
make
# I use local curl build without installing it
# make install
cd ..
我真诚地希望这对其他人有帮助。
RAND_egd() 不再是默认 OpenSSL 安装的一部分。参见 this git commit。您可以通过在配置命令中添加 enable-egd
来解决问题。