Как собрать статические библиотеки Paho MQTT C на Raspberry Pi? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь собрать статические библиотеки Eclipse Paho MQTT C на Raspberry Pi 3 B +. В качестве предварительного условия необходимо иметь в системе статическую версию библиотеки OpenSSL.

Сначала я попытался получить ее с помощью следующих команд:

git clone git://git.openssl.org/openssl.git
cd openssl
git checkout OpenSSL_1_1_1a
./config -static
sudo make install

Это действительно приводит кlibssl.a Файл в /usr/local/lib. Однако, когда я пытаюсь собрать статические библиотеки Paho, используя следующие команды, происходит сбой с ошибкой ниже:

git clone https://github.com/eclipse/paho.mqtt.c.git
mkdir /tmp/build.paho
cd /tmp/build.paho
cmake -GNinja -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_STATIC=TRUE ~/paho.mqtt.c
ninja

enter image description here

/usr/bin/ld: /usr/local/lib/libssl.a(methods.o): relocation R_ARM_MOVW_ABS_NC against ‘a local symbol’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libssl.a: error adding symbols: Bad value

Предлагаемое решение этой проблемы в нескольких вопросах Stackoverflow, по-видимому, заключается в создании статической библиотеки OpenSSL с флагом shared: ./config shared -static Но даже в этом случае сборка статических библиотек Paho завершается неудачно с точно такой же ошибкой.

Я должен добавить, что у меня не было проблем с этой процедурой на других аппаратных архитектурах. Может ли эта проблема быть связана с Raspberry Pi каким-либо образом? Как мне это решить?

1 Ответ

0 голосов
/ 05 ноября 2019

CFLAGS=-fPIC ./config shared -static, кажется, работал на OpenSSL. Однако после создания статических библиотек Paho MQTT C, которые завершаются без каких-либо ошибок, статических библиотек нигде не найти.

Если я тогда загляну в /usr/local/lib, я найду только динамические библиотеки .oтам нет статики. Почему это не работает на Pi, но отлично работает на другой системе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...