新手刚接触 OpenSSH 源码编译安装,使用了最新的 OpenSSL 1.1.1d ,应该算是顺利完成编译吧。现在想把编译好的 OpenSSH 打个压缩包发给别人使用(操作系统发行版相同),但别人的机子上并没有安装 OpenSSL 1.1.1d ( libcrypto.so.1.1 ),所以不能解压即用。百度谷歌了一番大概说是动态库 so、静态库 a 的问题,但在操作上还是很多不明白,请教一下如何才能把 OpenSSL 1.1.1d ( libcrypto.a )“固化”到 OpenSSH 程序里,实现别人机子上也能直接使用?
编译 OpenSSL 的参数:
./config \
--prefix=/usr/local/openssl-1.1.1d \
--openssldir=/usr/local/openssl-1.1.1d/ssl -fPIC
编译 OpenSSH 的参数:
./configure \
--prefix=/usr \
--sysconfdir=/etc/ssh \
--with-ssl-dir=/usr/local/openssl-1.1.1d \
--with-zlib=/usr/local/zlib-1.2.11 \
--with-pam \
--with-md5-passwords
编译后的 OpenSSH 在本机可以正常运行,版本如下:
[root@node1 ~]# ssh -V
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
[root@node1 ~]# ldd /usr/bin/ssh
linux-vdso.so.1 => (0x00007fff2e1e7000)
libcrypto.so.1.1 => /usr/local/openssl-1.1.1d/lib/libcrypto.so.1.1 (0x00007f05288f7000)
librt.so.1 => /lib64/librt.so.1 (0x00007f05286ee000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f05284ea000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f05282e7000)
libz.so.1 => /usr/local/zlib-1.2.11/lib/libz.so.1 (0x00007f05280cf000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f0527e97000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f0527c7d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f05278e9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f05276cb000)
/lib64/ld-linux-x86-64.so.2 (0x000055568f294000)
libfreebl3.so => /lib64/
libfreebl3.so (0x00007f05274c8000)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/637073
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.