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