linux - 使用静态库配置测试

标签 linux raspberry-pi cross-compiling libz

我正在尝试使用 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/

相关文章:

c++ - 如何确定构建 GCC 交叉编译器的体系结构?

c - 交叉编译时添加-O2选项导致展开回溯失败

linux - 如何通过ssh连接运行PHPUnit Selenium测试?

linux - 如何在ui上查看 Graphite 图?

linux - (Linux) 如何让子进程的子进程等待

linux - 在 Linux 上查找文件夹是否正在复制过程中

Raspberry Pi 上的 C++ 计时库

spring - 在端口 8080 的 DNS 缓存中未找到主机名,但在端口 80 上正常?

python-3.x - 有没有办法检查光驱是否有带有python的CD

ubuntu - arm交叉编译时如何处理Boost之类的库?