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.aBibliotecas 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?

questionAnswers(1)

yourAnswerToTheQuestion