Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的交叉编译器找不到共享库_C++_Eclipse_Cmake_Cross Compiling - Fatal编程技术网

C++ 我的交叉编译器找不到共享库

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

我在Debian VM上使用Eclipse编码,并交叉编译Raspberry Pi Zero。我想使用mraa图书馆,但经过几个小时的努力,我仍然无法让它工作。 -在目标(Raspi zero)上,我可以使用CMake本地编译mraa,只需遵循作者的说明即可。当我在本地玩C++实例时,它的工作非常完美。 -在主机上,我从目标复制了*.so文件,但交叉编译器不喜欢它(未定义的引用错误)。在Eclipse设置中,我将头目录添加到include路径,将共享库目录添加到库搜索路径(-L),并添加了-lmraa标志


我做错了什么?我应该使用CMake在主机上编译MRAA吗?如果是这样,我如何使用CMake定义我的交叉编译器?

很抱歉没有在前面编辑我的问题,但有时问题只有在找到答案后才变得清晰

本质上,我想使用一个库(MRAA),我有它的源代码和cmake文件。我认为我可以简单地在目标(我的RasPi Zero)上运行cmake,然后将.so(共享库)文件传输到主机,以便与Eclipse交叉编译。但它不起作用

因此,我在主机上使用cmake编译了库。为了让它工作,您需要提供一个指向交叉编译器的链接,以及一个指向与目标类似的根文件系统的链接,因为所有的依赖关系都存在。因此,我创建了一个toolchain.cmake文件来定义所有内容,并在运行cmake时将此工具链文件作为一个选项调用

这里解释了一切:

此处提供了交叉编译器和根文件系统:


当您的目标(在我的例子中是Raspberry Pi Zero)不存在编译版本时,这似乎是使用其他人的共享库的正确方法。

但是交叉编译器不喜欢它(未定义的引用错误)
。未定义引用表示链接器已找到为其指定的所有库,但这些库都不包含必需的符号。请输入您的问题,并在其中添加准确的错误消息。请注意,链接器不关心调用它的原因
cmake
可以很方便,但它不能产生魔力。