Linux环境下OpenSSL静态编译安装路径及命令问题咨询
静态编译OpenSSL到无包构建工具的专有Linux发行版
作为Linux新手,你在几乎没有包构建工具的专有发行版上尝试静态编译OpenSSL的操作思路很靠谱!先确认下你已经完成的正确步骤:
- 切换到临时目录操作,避免污染系统:
cd /tmp - 下载指定版本的OpenSSL源码:
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz - 解压源码包:
tar -zxvf openssl-1.0.1e.tar.gz - 进入源码目录:
cd openssl-1.0.1e - 生成基础配置文件:
./config - 修改Makefile的
CFLAG行,添加-static -static-libgcc(这一步是静态编译的关键,你选在./config之后修改完全正确)
接下来针对你遇到的两个核心问题逐一解答:
1. 没有package-root目录,该用什么路径替代?
你提议的make INSTALL_PREFIX=/tmp/openssl-1.0.1e install思路是对的,但更建议你在源码目录下单独创建一个子目录(比如install)作为安装目标,避免编译产物和源码文件混在一起,命令可以改成:
make INSTALL_PREFIX=/tmp/openssl-1.0.1e/install install
这样所有编译好的二进制、库文件都会集中到/tmp/openssl-1.0.1e/install目录下,后续你可以根据需求把这些文件复制到系统的对应位置(比如/usr/local/ssl),也方便清理临时文件。
2. 系统没有install命令,只有install.com或INSTALL怎么办?
OpenSSL的Makefile允许你指定自定义的安装工具,你只需要修改Makefile里的INSTALL变量:
- 打开
openssl-1.0.1e/Makefile,搜索包含INSTALL=的行(通常在文件开头部分) - 将默认的
INSTALL=install替换成你系统可用的命令,比如INSTALL=install.com或者INSTALL=INSTALL - 保存修改后,再执行上面的
make INSTALL_PREFIX=... install命令即可
静态编译成功的验证
你用ldd命令验证的方法非常准确:
ldd /tmp/package-root/usr/local/ssl/bin/openssl
当输出not a dynamic executable时,就说明你已经成功编译出完全静态的OpenSSL二进制文件——它不依赖任何系统动态库,正好适配你的专有发行版环境。
内容的提问来源于stack exchange,提问作者Pedro Caldeira




