如何在Raspberry Pi上构建Paho MQTT C静态库?

问题描述 投票:0回答:1

我正在尝试在Raspberry Pi 3 B +上构建Eclipse Paho MQTT C的静态库。作为前提条件,必须在系统上具有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问题中针对此问题的建议解决方案似乎是使用shared标志构建静态OpenSSL库:./config shared -static但是即使那样,静态Paho库的构建也会失败,并出现完全相同的错误。

我应该补充一点,在其他硬件体系结构上,此过程没有任何麻烦。这个问题可能与Raspberry Pi有关吗?我该如何解决?

cmake openssl static-libraries paho ninja
1个回答
0
投票

CFLAGS=-fPIC ./config shared -static似乎已用于OpenSSL。但是,在构建完静态Paho MQTT C库(完成而没有任何错误)之后,在任何地方都找不到静态库。

[然后查看/usr/local/lib,我只会在其中找到动态.o库,而没有静态.a库。为什么这在Pi上不起作用,但在其他系统上却可以正常工作?

© www.soinside.com 2019 - 2024. All rights reserved.