![libpng16.so:对‘inflateValidate’未定义引用](https://linux22.com/image/698562/libpng16.so%EF%BC%9A%E5%AF%B9%E2%80%98inflateValidate%E2%80%99%E6%9C%AA%E5%AE%9A%E4%B9%89%E5%BC%95%E7%94%A8.png)
我只是报告一下。我在尝试在 Amazon Linux(基于 Red Hat)上构建 libpng 时遇到了一个问题。但我得到了以下错误:
libtool: link: gcc -g -O2 -o .libs/pngfix contrib/tools/pngfix.o ./.libs/libpng16.so -lz -lm
./.libs/libpng16.so: undefined reference to `inflateValidate'
collect2: error: ld returned 1 exit status
我检查了环境变量,发现它们设置正常。nm
工具显示inflateValidate
位于 zlib 库导出中。我希望我的解决方案(见下文)能够帮助某人并节省他的时间。
答案1
解决方案是添加LDDFLAGS
到./configure
:
./configure --prefix=/usr LDFLAGS="-L/usr/lib -lz"
这解决了这个问题。
答案2
在 64 位机器上的 Lubuntu 16-04 上运行时,我的解决方案是指定库的路径zlib
。
首先,建zlib
库:
./configure \
--prefix=/home/stephane/programs/install
make
make install
make clean
然后,libpng
通过使用以下选项指定依赖项来构建库--with-zlib-prefix
:
./configure \
--prefix=/home/stephane/programs/install \
--with-zlib-prefix=/home/stephane/programs/install
make
make install
make clean
答案3
我的解决方案是通过配置 CPPFLAGS 和 LDFLAGS 来解决的。就我而言:
CPPFLAGS=/usr/zlib/include LDFLAGS=/usr/zlib/lib
./configure --prefix=<path_optional> CPPFLAGS=/usr/zlib/include LDFLAGS=/usr/zlib/lib
制作 制作安装 制作清理