为包含 Magick++.h 的 Raspberry Pi 交叉编译 C++ 程序时出现问题

问题描述

我正在尝试在 Ubuntu20.04 上运行 VS-Code 的 PC 上编译包含 Magick++.h 的 C++ 程序,该程序编译正常。如果我将编译器从 GCC 9.3.0 x86_64-linux-gnu 更改为 GCC 9.3.0 arm-linux-gnueabihf 以编译 RaspBerry Pi 的项目,那么它会失败说:

[build] /usr/local/lib/libmagick++-7.Q16HDRI.so: file not recognized: file format not recognized

我的 C++ 程序简化为:

#include <iostream>
#include "Magick++.h"

int main(int,char**) {
    std::cout << "Hello,world!\n";
}

完整的输出是:

[main] Building folder: testProject 
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/user/dev/testProject/build --config Debug --target all -j 4 --
[build] [1/1 100% :: 0.025] Linking CXX executable testProject
[build] Failed: testProject 
[build] : && /usr/bin/arm-linux-gnueabihf-g++-9  -pthread -g  -rdynamic CMakeFiles/testProject.dir/main.cpp.o  -o testProject  -L/usr/local/lib -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI && :
[build] /usr/local/lib/libmagick++-7.Q16HDRI.so: file not recognized: file format not recognized
[build] collect2: error: ld returned 1 exit status
[build] ninja: build stopped: subcommand Failed.
[build] Build finished with exit code 1

如果第二个包含被注释掉,那么程序可以正常编译并在 Pi 上运行。 我的感觉是,这可能是 ImageMagick 库没有正确配置为交叉编译的问题。但我在那里抓着稻草。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)