Přidejte -L /usr/local/ssl/lib/
do příkazového řádku GCC před -lcrypto
. Protože vytváříte proti hlavičkám OpenSSL pod /usr/local/ssl
, musíte se také propojit se skutečnou knihovnou pod stejnou předponou (i když se zdá, že tam máte nainstalovanou pouze statickou knihovnu, což může nebo nemusí být vaším záměrem; možná budete muset správně přeinstalovat své OpenSSL sestavené ze zdroje).
(upravit) Chcete-li opravit dlopen()
a přátelé, které linker nenajde, přidejte -ldl
do příkazového řádku GCC. -ldl
říká linkeru, aby také odkazoval na libdl.so, což je sdílená knihovna obsahující dlopen()
, dlsym()
, dlclose()
atd.; tyto funkce používá OpenSSL interně a tedy -ldl
je nepřímá závislost při použití -lcrypto
(na Linuxu). Protože odkazujete na statickou verzi libcrypto, musíte explicitně odkazovat proti všem nepřímým závislostem.
Pokud nejste obeznámeni s propojováním správných knihoven, doporučuji vám použít OpenSSL nainstalované z vašeho správce balíčků operačního systému; může vám to ušetřit nějaké potíže.
To může být relevantní pro lidi, kteří se pokusili vytvořit vlastní openssl ze zdroje a poté jej použít ke kompilaci jiných programů (v mém případě Git)
Během konfigurace openssl přidejte možnost 'shared':
./config shared
Tím se vytvoří požadovaná sdílená knihovna libcrypto.so
. Více najdete v souboru INSTALL.
Také, pokud narazíte na tuto chybu během 'make'
"....can not be used when making a shared object
překompilujte pomocí -fPIC
./config shared -fPIC