2015-09-15 1 views
0

Я пытаюсь скомпилировать программу, которая связывает библиотеку openssl. Когда я компилирую динамически, я не получаю никаких проблем. Проблемы возникают, когда я добавить -static флаг, я получаю эту ошибку:Static compilation linking Openssl

gcc -g -static -static-libgcc -static-libstdc++ -o hmac-sha1-bios-x64 ../main.c -lcrypto -lm 
/usr/bin/ld: impossibile trovare -lcrypto 
collect2: error: ld returned 1 exit status 
Makefile:10: set di istruzioni per l'obiettivo "hmac-sha1-bios-x64" non riuscito 
make: *** [hmac-sha1-bios-x64] Errore 1 

Кто-нибудь есть идеи, как компилировать статически OpenSSL библиотеки?

Я искал некоторые ссылки на libcrypto.a в/usr/lib, но я получил только libcrypt.a. Я работаю над archlinux, возможно ли, что официальный пакет openslsl archlinux не включает необходимые файлы для статического копирования?

+0

Возможно, это означает, что нет статической версии 'libcrypto'? – trojanfoe

+0

Итак, единственный способ заставить его работать, это собрать сами библиотеки, не так ли? Но это странно, официальный пакет archlinux скомпилирован с общим вариантом, и здесь (https://wiki.openssl.org/index.php/Compilation_and_Installation) написано: _Build общий объект в дополнение к статическому архиву_ – haster8558

ответ

2

Хорошо, я решил. Во время создания пакета openssl все статические библиотеки удаляются. Единственный способ это загрузить PKGBUILD, затем добавить «staticlibs» в поле опций:

options=('!makeflags' 'staticlibs') 

В этом случае пакет является восстановление статических LIBS и он должен работать.