首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Qt交叉编译到Raspberry Pi 3B+的通讯录(协议缓冲区)错误符号查找错误

与Qt交叉编译到Raspberry Pi 3B+的通讯录(协议缓冲区)错误符号查找错误
EN

Stack Overflow用户
提问于 2019-11-03 12:14:54
回答 1查看 233关注 0票数 1

我正在交叉编译从Qt (Ubuntu19.10-5.12.3)到覆盆子Pi 3B+ (stetch)。我成功地做到了,我可以运行一个应用程序从Qt到Raspberry。

现在,我想部署并执行一个应用程序,其中包含用protocol(协议缓冲区)获得的.h和.cc文件。

首先,我在笔记本电脑上安装了协议缓冲器3.10.1 .我创建了.h和.cc文件,然后在Qt中将它们添加到我的项目.h中

在使用此配置重复操作之后:

代码语言:javascript
复制
./configure --host=arm-linux CC=/home/belfix/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc CXX=/home/belfix/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++

这样我就得到了树莓所需的脂原.在Qt untitled.pro中,我添加了以下几行:

代码语言:javascript
复制
unix:!macx: LIBS += -L$$PWD/../../../usr/local/lib/ -lprotobuf

INCLUDEPATH += $$PWD/../../../usr/local/include
DEPENDPATH += $$PWD/../../../usr/local/include

unix:!macx: PRE_TARGETDEPS += $$PWD/../../../usr/local/lib/libprotobuf.a

程序的构建和部署但是..。当我按Run键时,我有这个错误

/home/pi/untitled/bin/untitled:符号查找错误:/home/pi/#en0#/bin/untitled:未定义符号:_ZN6google8protobuf8internal26fixed_address_empty_stringE

我怎样才能修好它?

在树莓里面,我试过:ldd -d -r untitled

代码语言:javascript
复制
linux-vdso.so.1 (0x7ef7d000)
/usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76ee8000)
libprotobuf.so.21 => /usr/local/lib/libprotobuf.so.21 (0x76c9d000)
libQt5Widgets.so.5 => /usr/local/qt5pi/lib/libQt5Widgets.so.5 (0x76770000)
libQt5Gui.so.5 => /usr/local/qt5pi/lib/libQt5Gui.so.5 (0x762b8000)
libQt5Mqtt.so.5 => /usr/local/qt5pi/lib/libQt5Mqtt.so.5 (0x76288000)
libQt5Network.so.5 => /usr/local/qt5pi/lib/libQt5Network.so.5 (0x7610b000)
libQt5Core.so.5 => /usr/local/qt5pi/lib/libQt5Core.so.5 (0x75ba1000)
libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0x75b7c000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x75b53000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x75a0b000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x7598c000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x7595f000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x75820000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x757f9000)
/lib/ld-linux-armhf.so.3 (0x76efe000)
libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0x757bf000)
libdouble-conversion.so.1 => /usr/lib/arm-linux-gnueabihf/libdouble-conversion.so.1 (0x7579d000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x7578a000)
libgthread-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgthread-2.0.so.0 (0x75778000)
libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x75670000)
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0x75637000)
libbcm_host.so => /opt/vc/lib/libbcm_host.so (0x7560e000)
libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0x755f8000)
libvcos.so => /opt/vc/lib/libvcos.so (0x755df000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x755c8000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x7554f000)
undefined symbol: _ZN6google8protobuf8internal26fixed_address_empty_stringE (./untitled)
undefined symbol: _ZNK6google8protobuf7Message25InitializationErrorStringEv (./untitled)
undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameEv   (./untitled)
undefined symbol: _ZN6google8protobuf8internal24InlineGreedyStringParserEPSsPKcPNS1_12ParseContextE (./untitled)
undefined symbol: _ZN6google8protobuf2io19EpsCopyOutputStream30WriteStringMaybeAliasedOutlineEjRKSsPh   (./untitled)
EN

回答 1

Stack Overflow用户

发布于 2019-11-03 14:35:26

尝试将其添加到.pro文件中。

代码语言:javascript
复制
DEFINES += PROTOBUF_USE_DLLS

实际上,您正在链接到动态构建的PB库。因此,您需要添加这个预处理器定义。如果是选项,您也可以静态地构建PB。

您可能还想注意到

用于交叉编译的说明 makefiles通常调用它们刚刚构建的用于构建测试的protoc可执行文件。当交叉编译时,原型可执行文件可能无法在主机上执行.在这种情况下,您必须首先为主机构建一个protoc的副本,然后使用-with选项告诉configure使用它。例如: ./configure --with-protoc=protoc 这将使用已安装的原型(在您的$PATH中找到),而不是尝试执行在构建过程中构建的原型。您还可以使用尚未安装的可执行文件。例如,如果您在./ host中为您的主机构建了protobuf包,您可以这样做: ./configure --with-protoc=../host/src/protoc 无论哪种方式,您都必须确保所使用的protoc可执行文件与您试图使用的protobuf源代码具有相同的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58680056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档