Erros que se referem a um monte de símbolos OpenSSL não resolvidos que existem claramente?
Eu estou construindo uma biblioteca compartilhada (vamos chamá-lo de "foo") que faz uso de outra biblioteca (vamos chamá-lo de "bar"). "bar" faz uso de algumas funções do OpenSSL.
Aqui é onde o problema aparece.
"bar" foi compilado como uma biblioteca estática e parece que o OpenSSL também era. Então, quando eu ligar a biblioteca ("foo"), incluo o:
arquivos de objeto para "foo"biblioteca estáticalibbar.a
Bibliotecas estáticas do OpenSSLlibcrypto.a
elibssl.a
O comando de compilação é algo como isto:
g++ -Wl,-soname,libfoo.so -shared file1.o file2.o libbar.a \
libcrypto.a libssl.a -o libfoo.so
No entanto, recebo uma tonelada de erros:
ld: ./obj/libbar.a(file1.c.o): in function initialize_openssl:
ssl.c:117: error: undefined reference to 'SSL_library_init'
Executando o seguinte comando:
nm libssl.a | grep SSL_library_init
Produz a seguinte saída:
00000000 T SSL_library_init
Então, obviamente, não há nada de errado com as bibliotecas OpenSSL. O que poderia ter causado algo assim? Aqui estão os três comandos usados para construir o OpenSSL:
export cross=arm-linux-androideabi-
./Configure android --prefix=~/openssl-arm
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"
O processo de compilação foi concluído sem nenhum erro, então estou completamente perplexo.
Por que estou recebendo erros de vinculação que se referem a um monte de símbolos OpenSSL que existem claramente?