Eclipse CDT - ссылка libcrypto.so для кросс-компиляции

1

Я хочу перекрестно скомпилировать программу 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

Кажется, это ошибка связи, но я не знаю, почему. Спасибо за помощь.

  • 0
    Какую версию OpenSSL вы используете? Откуда это /opt/crosstool/arm-none-linux-gnueabi : /opt/crosstool/arm-none-linux-gnueabi ? (Это нормально, я пытаюсь настроить тестовый стенд для проверки ответа).
  • 0
    Я использую версию 1.0.1. Путь - это путь к моему кросс-компилятору, это был путь по умолчанию после установки моего кросс-компилятора. По этому пути у меня есть все папки, необходимые для моего встроенного оборудования, некоторые дополнительные библиотеки для оборудования, а также библиотеки по умолчанию (и файлы заголовков), но не библиотеки OpenSSL. Я попытался скопировать файлы libcrypto.so в папки кросс-компилятора, но ошибка все та же.
Теги:
openssl
eclipse-cdt
cross-compiling

1 ответ

1

Хорошо, наконец, решила проблему. Я не знал, что мне пришлось настроить 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню