2013-11-22 2 views
2

The OpenSSL двоичная порождена конфигурации & делают команды при построении из исходных текстов динамически связанно с этими библиотеками:Компиляция 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) 

Я думаю, если я могу связать статический Lib НКУ, зависимости от других разделяемых библиотек тоже исчезнут.

Вопрос: Как получить скрипт Configure для создания статически связанного двоичного кода ?

Будет ли процесс одинаковым для построения на Windows?

+0

Другим вариантом является возможность динамического связывания, но использовать RPATH. Для этого см. [Компиляция и установка | Использование RPATH] (https://wiki.openssl.org/index.php/Compilation_and_Installation#Using_RPATHs) в вики OpenSSL. Или см. [Build OpenSSL с RPATH?] (Http://stackoverflow.com/q/29858870) о переполнении стека. – jww

ответ

0

Я наткнулся на это сообщение, ища то же самое. Я не знаю правильного синтаксиса, чтобы заставить скрипт 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" в CFLAG линии OpenSSL-1.0.1e/Makefile (Обратите внимание, это было, когда я побежал ./config). Затем я построил его, как обычно.

make INSTALL_PREFIX=/tmp/package-root install 

он теперь статически скомпилирован

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

Я не был в состоянии получить указанное решение для работы. Компилятор сбросил ошибки в _dlopen, которые не определены.

Я добавил параметр «без общего доступа» в строку конфигурации, и этот встроенный openssl статически связан с библиотеками openssl.

Это еще зависит от libsocket.so.2, linnsl.so, libz.so и libc.so.1

Смежные вопросы