¿Errores que se refieren a un grupo de símbolos OpenSSL sin resolver que existen claramente?

Estoy construyendo una biblioteca compartida (la llamaremos "foo") que hace uso de otra biblioteca (la llamaremos "barra"). "bar" hace uso de algunas funciones de OpenSSL.

Aquí es donde el problema surge.

"barra" se compiló como una biblioteca estática y parecería que OpenSSL también lo era. Así que cuando vinculo la biblioteca ("foo"), incluyo:

archivos de objeto para "foo"biblioteca estáticalibbar.aBibliotecas estáticas OpenSSLlibcrypto.a ylibssl.a

El comando de construcción se ve algo como esto:

g++ -Wl,-soname,libfoo.so -shared file1.o file2.o libbar.a \
  libcrypto.a libssl.a -o libfoo.so

Sin embargo, me sale un montón de errores:

ld: ./obj/libbar.a(file1.c.o): in function initialize_openssl:
  ssl.c:117: error: undefined reference to 'SSL_library_init'

Ejecutando el siguiente comando:

nm libssl.a | grep SSL_library_init

Produce la siguiente salida:

00000000 T SSL_library_init

Así que obviamente no hay nada malo con las bibliotecas de OpenSSL. ¿Qué podría haber causado algo como esto? Aquí están los tres comandos utilizados para construir OpenSSL:

export cross=arm-linux-androideabi-
./Configure android --prefix=~/openssl-arm
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"

El proceso de compilación se completó sin errores, por lo que estoy completamente desconcertado.

¿Por qué recibo errores de vinculador que se refieren a un grupo de símbolos OpenSSL que claramente existen?

Respuestas a la pregunta(1)

Su respuesta a la pregunta