我想从源代码构建一个特定OpenSSL版本的OpenSSH版本,但是我收到以下错误:
mkdir /tmp/ssh
cp openssh-6.7p1.tar.gz /tmp/ssh
cp openssl-1.0.1l.tar.gz /tmp/ssh
cd /tmp/ssh
tar zxvf openssl-1.0.1l.tar.gz
cd openssl-1.0.1l
./config --prefix=/tmp/ssh
make
make install
cd ..
tar zxvf openssh-6.7p1.tar.gz
cd openssh-6.7p1
./configure --with-ssl-dir=/tmp/ssh --prefix=/tmp/ssh
...
checking openssl/opensslv.h usability... no
checking openssl/opensslv.h presence... no
checking for openssl/opensslv.h... no
configure: error: *** OpenSSL headers missing - please install first or check config.log ***
openSSH配置脚本中是否有错误,或者我是否需要更改任何命令?
答案 0 :(得分:5)
这是一种不向./configure
发送标志的方法您需要先安装OpenSSL。获取最新的tarball here。
./config
make
make test
make install
apt-get install libssl-dev
然后您可以重试installing OpenSSH:
cd openssh-[version]
./configure
make
make install
答案 1 :(得分:1)
ftp://ftp.ca.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL说:
应将LibreSSL / OpenSSL编译为与位置无关的库 (即使用-fPIC)否则OpenSSH将无法与之链接。 如果您必须使用非位置无关的libcrypto,那么您可能需要 配置OpenSSH --without-pie。
以下命令不会导致" OpenSSL标头丢失"错误了:
f.select
答案 2 :(得分:0)
openSSH的配置脚本中是否存在错误,或者我是否需要更改任何命令?
根据Installing OpenSSL and OpenSSH:
如果'configure'找不到ssl,请将configure命令更改为:
./configure --prefix=/usr --with-ssl-dir=/usr/local/ssl --with-tcp-wrappers
以上意味着OpenSSL标题位于/usr/local/ssl/include
,而库位于/usr/local/ssl/lib
。我认为您需要将路径更改为/tmp/ssh
。
自:
cd openssl-1.0.1l
./config --prefix=/tmp/ssh
...
我认为你应该使用:
cd openssl-1.0.1l
./config --openssldir=/tmp/ssh/openssl
...
另请参阅OpenSSL wiki上的Compilation and Installation。您可能希望使用其他选项,例如enable-ec_nistp_64_gcc_128
。
使用/tmp/ssh/openssl
中的OpenSSL,然后:
cd openssh-6.7p1
./configure --with-ssl-dir=/tmp/ssh/openssl --prefix=/tmp/ssh
...
使用非系统提供的OpenSSL可能会带来麻烦。所以您可能还想查看Build OpenSSL with RPATH?。您可能还想使用RPATH构建OpenSSH。
答案 3 :(得分:0)
这是解决此 OpenSSL 标头丢失错误的方法。
git clone https://github.com/openssl/openssl.git
cd openssl
./Configure
make
make install
现在将安装 OpenSSL,您将不再收到 OpenSSL 标头丢失消息。