Я хочу перекрестно скомпилировать программу C++, в которой используются некоторые файлы OpenSSL:
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/bio.h>
#include <openssl/err.h>
Поскольку путь кросс-компилятора (/opt/crosstool/arm-none-linux-gnueabi/include
) отличается от пути по умолчанию /usr/include
, где все файлы заголовков OpenSSL, мне пришлось установить путь включения с помощью щелкните правой кнопкой мыши по проекту → свойства → C/C++ Общие → Путь и символы → Добавить... → /usr/include
чтобы включить файлы заголовков.
То же самое с libcrypto.so:
... C/C++ Общие → Библиотеки → Добавить... crypto
... C/C++ Общие → Пути библиотек → Добавить... /usr/lib/i386-linux-gnu
(в этой папке я нашел librypto.so)
При создании моего проекта я получаю следующую ошибку:
/opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libcrypto.so when searching for -lcrypto
/opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libcrypto.a when searching for -lcrypto
/opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lcrypto
Кажется, это ошибка связи, но я не знаю, почему. Спасибо за помощь.
Хорошо, наконец, решила проблему. Я не знал, что мне пришлось настроить OpenSSL для его использования, чтобы скомпилировать с помощью ARM.
Просто запустите свой терминал и введите:
export cross=arm-none-linux-gnueabi-
cd openssl-1.0.1s
./Configure dist --prefix=$HOME/opensslArm
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"
make install
Теперь у вас есть папка с именем opensslArm в вашем домашнем каталоге. В этой папке вы найдете все файлы заголовков и сама библиотека. Таким образом, в Eclipse добавьте путь к opensslArm/include для ваших включений и opensslArm/lib в пути к вашей библиотеке. Посмотрите здесь дополнительную информацию: Cross Compile OpenSSH для ARM
/opt/crosstool/arm-none-linux-gnueabi
:/opt/crosstool/arm-none-linux-gnueabi
? (Это нормально, я пытаюсь настроить тестовый стенд для проверки ответа).