Ошибки, которые ссылаются на кучу неразрешенных символов OpenSSL, которые явно существуют?
Я строю общую библиотеку (мыпозвонюFoo») который использует другую библиотеку (мы 'позвонюбар"). "бар" использует некоторые функции из OpenSSL.
Вот'где проблемы возникают. "
бар" был скомпилирован как статическая библиотека, и кажется, что OpenSSL тоже. Поэтому, когда я связываю библиотеку ("Foo»), Я включаю:
объектные файлы для "Foo»статическая библиотекаlibbar.a
Статические библиотеки OpenSSLlibcrypto.a
а такжеlibssl.a
Команда build выглядит примерно так:
g++ -Wl,-soname,libfoo.so -shared file1.o file2.o libbar.a \
libcrypto.a libssl.a -o libfoo.so
Тем не менее, я получаю массу ошибок:
ld: ./obj/libbar.a(file1.c.o): in function initialize_openssl:
ssl.c:117: error: undefined reference to 'SSL_library_init'
Выполнение следующей команды:
nm libssl.a | grep SSL_library_init
Производит следующий вывод:
00000000 T SSL_library_init
Очевидно, что с библиотеками OpenSSL все в порядке. Что могло вызвать что-то подобное? Вот три команды, используемые для сборки OpenSSL:
export cross=arm-linux-androideabi-
./Configure android --prefix=~/openssl-arm
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"
Процесс компиляции завершен без каких-либо ошибок, поэтому яЯ совершенно сбит с толку.
Почему я получаю ошибки компоновщика, которые ссылаются на кучу символов OpenSSL, которые явно существуют?