从源tarball构建时,由config&make命令生成的openssl二进制文件动态链接到以下库:
linux-vdso.so.1 => (0x00007fffa75fe000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff7f79ab000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff7f75e2000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff7f7bd2000)
Run Code Online (Sandbox Code Playgroud)
我的猜测是,如果我可以静态链接到lib gcc,则对其他共享库的依赖关系也将消失。
问题是如何获取配置脚本以生成静态链接的二进制文件?
在Windows上构建的过程也一样吗?
对我有用的是通过-static 并 --static迈出./config一步。--no-shared似乎记录在 INSTALL 中,但导致构建失败。-static其本身也导致构建失败。
./config --static -static
小智 1
我在寻找同样的东西时发现了这篇文章。我不知道配置脚本执行此操作的正确语法,但这就是我实现它的方法。
cd /tmp
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
Run Code Online (Sandbox Code Playgroud)
然后我将“-static -static-libgcc”添加到 openssl-1.0.1e/Makefile 的 CFLAG 行中(注意这是在我运行 ./config 之后)。然后我像平常一样构建它。
make INSTALL_PREFIX=/tmp/package-root install
Run Code Online (Sandbox Code Playgroud)
现在是静态编译的
$ ldd /tmp/package-root/usr/local/ssl/bin/openssl
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7200 次 |
| 最近记录: |