我正在尝试使用 zlib 在 Ubuntu 14.04 (x_64) 上为 RaspberryPi 交叉编译 libpng 但配置失败
configure: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: cannot find -lz collect2: error: ld returned 1 exit status configure:11400: $? = 1 configure: failed program was: ....
因为我使用的是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
最佳答案
在尝试在另一个项目中使用 zlib 之前,您需要交叉构建 并将 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。
关于linux - 使用静态库配置测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312224/