静态编译openssl二进制文件

配置和生成的openssl二进制文件从源代码构建时,make命令会动态链接到这些库:

    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)

我的猜测是,如果我可以静态链接到lib gcc,其他共享库的依赖关系也会消失.

问题是如何让Configure脚本生成静态链接的二进制文件?

在Windows上构建过程是否也一样?

最佳答案 我在搜索同样的事情时遇到过这篇文章.我不知道使用configure脚本执行此操作的正确语法,但这就是我实现它的方法.

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

然后我将“-static -static-libgcc”添加到openssl-1.0.1e / Makefile的CFLAG行中(注意这是我运行./config之后).然后我像平常一样建造它.

make INSTALL_PREFIX=/tmp/package-root install

它现在是静态编译的

$ldd /tmp/package-root/usr/local/ssl/bin/openssl
        not a dynamic executable
点赞