为 arm-linux 交叉编译时加载共享库 libz.so.1 时出错

Mar*_*gan 5 shared-library compiling gcc arm cross-compilation

我正在尝试在 Ubuntu 14.04 上交叉编译一个 opencv 应用程序以在 ARM 内核上运行。我可以在 Ubuntu 上用

g++ test.c -o test -I /usr/include/opencv -I /usr/include/opencv2 -L /usr/local/lib/ -lopencv_core -lopencv_imgproc -lopencv_highgui
Run Code Online (Sandbox Code Playgroud)

它编译,我的目录中有一个 testl.bin。

但是,当我为我的 arm 核心更改编译器时

arm-linux-gnueabi-g++ test.c -o test -I /usr/include/opencv -I /usr/include/opencv2 -L /usr/local/lib/ -lopencv_core -lopencv_imgproc -lopencv_highgui
Run Code Online (Sandbox Code Playgroud)

我遇到了错误

error while loading shared libraries: libz.so.1: cannot open shared object file: no such file or directory.
Run Code Online (Sandbox Code Playgroud)

当我尝试安装这个库时 apt-get 让我知道它是最新版本并且不需要安装任何东西。

有人可以帮我吗?

小智 12

我有同样的问题 - 这有点令人困惑。交叉编译器可能是 32 位的(我的情况),所以它抱怨缺少 32 位库:

sudo apt-get install zlib1g:i386
Run Code Online (Sandbox Code Playgroud)

然后交叉编译器应该可以工作。


小智 7

我遇到了同样的问题,但@Marek 建议的库在我的系统上没有安装候选。相反,我通过运行解决了这个问题:

sudo apt-get install lib32z1
Run Code Online (Sandbox Code Playgroud)