0

我正在尝试使用 zlib 在 Ubuntu 14.04 (x_64) 上为 RaspberryPi 交叉编译 libpng,但配置失败

配置:11400:arm-linux-gnueabihf-gcc -o conftest -g -O2 -I/home/user/RPI_DEV/lib/include conftest.c -lz -lm >&5 /home/user/RPI_DEV/xtools/arm- bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux -gnueabihf/bin/ld:找不到 -lz collect2:错误:ld 返回 1 退出状态配置:11400:$?= 1 配置:失败的程序是:....

因为我用的是arm的工具链,arm-ld找不到zlib。

是否有任何配置选项不使用共享库编译,而是尝试使用静态库(例如 -static -lz)。

命令是

./configure --enable-static=true --enable-shared=false --with-zlib-include="/home/user/RPI_DEV/lib/include" --with-zlib-lib="/home/user /RPI_DEV/lib/lib" LDFLGS="-L/home/user/RPI_DEV/lib/lib" CPPFLAGS="-I/home/user/RPI_DEV/lib/include" -enable-static --host=arm-linux -gnueabihf --prefix=/home/user/RPI_DEV/lib --exec-prefix=/home/user/RPI_DEV/lib

4

2 回答 2

1

在尝试在另一个项目中使用它之前,您需要交叉构建并将 zlib 安装到您的工具链中。

您正在做的事情可能有效,但前提是您正确拼写 LDFLAGS:

LDFLGS="-L/home/user/RPI_DEV/lib/lib"

请注意缺少的“A”。我不知道为什么你的第二次尝试成功了,因为你有同样的拼写错误;您的环境中可能有正确的 LDFLAGS 吗?

无论如何,应该有一个 Ubuntu 交叉开发指南来解释如何做到这一点。这有点偏离主题,但对于 Gentoo,您使用“crossdev”安装工具链,然后使用普通包安装机制的 crossdev 特定版本([host]-emerge)将 zlib 安装到工具链中。

此外,我能找到的任何当前版本的 libpng 都不支持 --with-zlib-include 和 --with-zlib-lib 参数。如果您要为 RPi(或者,实际上是任何 ARM 系统)交叉编译 libpng,您应该使用可以找到的最新版本的 1.6。

于 2015-03-21T15:02:26.067 回答
0

除非有人以正确的方式解决了这个问题,否则这是我所做的。

  1. 打开 configure.ac 文件
  2. 查找并注释掉行

AC_CHECK_LIB(z, zlibVersion, , AC_ERROR([zlib not installed]))

配置将通过对 zlib 的检查,然后手动添加 zlib

LDFLGS="-L/home/user/RPI_DEV/lib/lib -L/home/user/RPI_DEV/lib/lib/libz.a"

  1. 运行自动配置
  2. 运行 ./config ...
于 2015-02-04T02:31:12.470 回答