Por que recebo erros de “referência indefinida” quando se liga ao OpenSSL?

7

Meu processo de compilação gera erros como

..undefined reference to 'BN_cmp'

embora eu inclua <openssl/bn.h>

e execute gcc -lssl -lcrypto test.c -o test

alguém pode ajudar? (openssl libssl1.0.0, libssl-dev estão instalados)

    
por einalex 28.09.2012 / 22:21

1 resposta

13

A solução é tão simples quanto adicionar os -l flags no end :

gcc test.c -o test -lssl -lcrypto

A ordem é importante porque ld desde o Ubuntu 11.04 é invocado com a opção -as-needed por padrão, para que os arquivos / bibliotecas que dependem de outras bibliotecas venham antes dessas outras bibliotecas, ou seja, test.c needs libcrypto , então deve vir antes de -lcrypto .

Para mais informações, veja Toolchain Transition em Natty Narwhal .

    
por ish 28.09.2012 / 23:34

Tags