【问题标题】:OpenSSH upgrade library vs header mismatchOpenSSH 升级库与标头不匹配
【发布时间】:2013-09-12 09:19:49
【问题描述】:

我正在将更新版本的 openssh 安装到 ubuntu 服务器上(罕见 13.04)

我已设置export LDFLAGS="-I/usr/lib-I/usr/local/lib"

当运行我的./configure 语句时

./configure --prefix=/usr --exec_prefix=/usr --libexecdir=/usr/lib/openssh
--sysconfdir=/etc/ssh --datadir=/usr/share/sshd --with-md5-passwords 
--with-privsep-path=/var/lib/sshd

输出结束:

.....
checking OpenSSL header version... 1000105f (OpenSSL 1.0.1e 11 Feb 2013)
checking OpenSSL library version... 1000103f (OpenSSL 1.0.1c 10 May 2012)
checking whether OpenSSL's headers match the library... no
configure: error: Your OpenSSL headers do not match your
library. Check config.log for details.

我尝试了一个提示,建议将 LDFLAGS 更改为

export LDFLAGS="-L/usr/lib/libssl.so -/usr/lib/libcrypto.so"

强制使用一个库

但是当我运行 ./configure 命令时,我得到了

.........
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/usr/local/sas/openssh-6.2p2':
configure: error: C compiler cannot create executables
See `config.log' for more details

大家还有什么想法吗?

【问题讨论】:

  • -I 应该进入CFLAGS,而不是LDFLAGS,链接器不使用include 语句,因此当它开始链接时,更改包含路径为时已晚。 export LDFLAGS="-L/usr/lib/libssl.so -/usr/lib/libcrypto.so" 也有点乱,应该是平淡的吧; export LDFLAGS="-L/usr/lib" 因为 -L 只是为编译器寻找库提供路径,而不是实际库的绝对路径。
  • 干杯——我已经尝试了 LDFLAGS 语句的几种变体,包括“-L/usr/lib”,你注意到的那个是来自另一个人在另一个网站上遇到同样问题的人,但它对他们有用 - 但不是对我来说
  • 干杯——我已经尝试了 LDFLAGS 语句的几种变体,包括“-L/usr/lib”,你注意到的那个是来自另一个人在另一个网站上遇到同样问题的人,但它对他们有用 - 但不是对我来说关于 CFLAGS 我认为是 CPPLFAGS 所以我尝试了各种 CPPFLAGS= 单独和 LDFLAGS 的陈述,包括 CPPFLAGS="-I/usr/include" 和 CPPFLAGS="-I/usr/include -I/usr/local/include " 我尝试了以下方法,我认为这是您的建议 CFLAGS="-I/usr/include" 并且当它不起作用时 CFLAGS="-I/usr/include -I/usr/local/include" 任何想法跨度>

标签: ubuntu configure openssh ldflags


【解决方案1】:

解决方案非常简单。很多人都面临这个问题,所以我想分享我是如何解决它的,希望它能帮助那里的人,尤其是“心脏出血虫”的问题。如果你有这个尝试编译 openssl 例如:

checking OpenSSL header version... 1000107f (OpenSSL 1.0.1g 7 Apr 2014)
checking OpenSSL library version... 9080ef (OpenSSL 0.9.8y 5 Feb 2013)
checking whether OpenSSL's headers match the library... no
configure: error: Your OpenSSL headers do not match your
library.

解决方案:

  1. 找到 openssl 压缩包并重建它,如下所示。

    tar xvfz /usr/src/openssl-1.0.1g.tar.gz   (IF YOU DID THIS BEFORE GO TO NEXT STEP)
    cd /usr/src/openssl-1.0.1g/  
    ./config –prefix=/usr/local –openssldir=/usr/local/openssl shared
    make clean
    make
    make test
    make install
    openssl version
    echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
    ldconfig –v
    
  2. 重新编译openssh

    tar xvfz /usr/src/openssh-6.6p1.tar.gz   (IF YOU DID THIS BEFORE GO TO NEXT STEP)
    cd /usr/src/openssh-6.6p1/
    ./configure
    make
    make install
    
  3. 验证安装并重新启动 sshd 守护进程

    ssh –V
    
    OpenSSH_6.6p1, OpenSSL 1.0.1g 7 Apr 2014 (this should be your display)
    
    /etc/rc.d/rc.sshd restart
    

您可能需要退出您的 ssh 会话并重新登录,然后再次输入 ssh -V

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2016-07-27
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多