C++ 我的交叉编译器找不到共享库
我在Debian VM上使用Eclipse编码,并交叉编译Raspberry Pi Zero。我想使用mraa图书馆,但经过几个小时的努力,我仍然无法让它工作。 -在目标(Raspi zero)上,我可以使用CMake本地编译mraa,只需遵循作者的说明即可。当我在本地玩C++实例时,它的工作非常完美。 -在主机上,我从目标复制了*.so文件,但交叉编译器不喜欢它(未定义的引用错误)。在Eclipse设置中,我将头目录添加到include路径,将共享库目录添加到库搜索路径(-L),并添加了-lmraa标志C++ 我的交叉编译器找不到共享库,c++,eclipse,cmake,cross-compiling,C++,Eclipse,Cmake,Cross Compiling,我在Debian VM上使用Eclipse编码,并交叉编译Raspberry Pi Zero。我想使用mraa图书馆,但经过几个小时的努力,我仍然无法让它工作。 -在目标(Raspi zero)上,我可以使用CMake本地编译mraa,只需遵循作者的说明即可。当我在本地玩C++实例时,它的工作非常完美。 -在主机上,我从目标复制了*.so文件,但交叉编译器不喜欢它(未定义的引用错误)。在Eclipse设置中,我将头目录添加到include路径,将共享库目录添加到库搜索路径(-L),并添加了-lm
我做错了什么?我应该使用CMake在主机上编译MRAA吗?如果是这样,我如何使用CMake定义我的交叉编译器?很抱歉没有在前面编辑我的问题,但有时问题只有在找到答案后才变得清晰 本质上,我想使用一个库(MRAA),我有它的源代码和cmake文件。我认为我可以简单地在目标(我的RasPi Zero)上运行cmake,然后将.so(共享库)文件传输到主机,以便与Eclipse交叉编译。但它不起作用 因此,我在主机上使用cmake编译了库。为了让它工作,您需要提供一个指向交叉编译器的链接,以及一个指向与目标类似的根文件系统的链接,因为所有的依赖关系都存在。因此,我创建了一个toolchain.cmake文件来定义所有内容,并在运行cmake时将此工具链文件作为一个选项调用 这里解释了一切: 此处提供了交叉编译器和根文件系统:
当您的目标(在我的例子中是Raspberry Pi Zero)不存在编译版本时,这似乎是使用其他人的共享库的正确方法。
但是交叉编译器不喜欢它(未定义的引用错误)
。未定义引用表示链接器已找到为其指定的所有库,但这些库都不包含必需的符号。请输入您的问题,并在其中添加准确的错误消息。请注意,链接器不关心调用它的原因cmake
可以很方便,但它不能产生魔力。