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

我正在尝试在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

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

/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有关吗?我该如何解决?

power1234power 回答:如何在Raspberry Pi上构建Paho MQTT C静态库?

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

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

本文链接:https://www.f2er.com/3167881.html

大家都在问