gpt4 book ai didi

c++ - MinGW/msys,链接器 (ld.exe) 没有找到 libpng (-lpng),即使它已安装,正在运行 xpdf 配置脚本

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:19 28 4
gpt4 key购买 nike

我从源代码中安装了 1.2、1.4 和 1.6 版的 libpng,它们包含用于 MinGW/msys 的 makefile。它似乎工作 - 我在不同的地方都有头文件:

  • /包含
  • /include/libpng
  • /include/libpng12
  • /include/libpng14
  • /本地/包含
  • /local/include/libpng
  • /local/include/libpng16

以及库文件:

  • /lib/libpng.a
  • /lib/libpng.dll.a
  • /lib/libpng12.a
  • /lib/libpng12.dll.a
  • /lib/libpng14.a
  • /lib/libpng14.dll.a
  • /local/lib/libpng.a
  • /local/lib/libpng.dll
  • /local/lib/libpng16.a
  • /local/lib/libpng16.dll

我用 msys 的 bash 调用配置脚本,无论我将 include 目录和库组合成什么,它都会在同一个地方阻塞。 Config.log 给了我以下信息:

configure:7732: checking png.h usability  
configure:7732: gcc -c -g -O2 -I/local/include conftest.c >&5
configure:7732: $? = 0
configure:7732: result: yes
configure:7732: checking png.h presence
configure:7732: gcc -E -I/local/include conftest.c
configure:7732: $? = 0
configure:7732: result: yes
configure:7732: checking for png.h
configure:7732: result: yes
configure:7761: checking for png_write_row in -lpng
configure:7786: gcc -o conftest.exe -g -O2 conftest.c -lpng -I/local/include /local/lib/libpng.a -lz >&5
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng
collect2.exe: error: ld returned 1 exit status

我已经尝试了上面列出的包含目录和库的所有组合,每次都是一样的。会是

configure:7786: gcc -o conftest.exe -g -O2   conftest.c -lpng -I/include/libpng  /lib/libpng.dll.a -lz  >&5  
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng

configure:7786: gcc -o conftest.exe -g -O2   conftest.c -lpng -I/local/include/libpng16  /local/lib/libpng16.dll -lz  >&5  
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng

configure:7786: gcc -o conftest.exe -g -O2   conftest.c -lpng -I/include/libpng12  /lib/libpng12.a -lz  >&5  
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng

你明白了。我已经成功编译了其他几个不需要 libpng 的 xpdf 片段。但在这里,我完全不知所措。

最佳答案

试试这个:

  1. 将 MinGW redist 添加到路径中。
  2. 确保 MinGW 库和包含路径在 Cygwin 之前。 (MinGW 目标的 png.h header 与 Cygwin 目标的 png.h header 不兼容。)
  3. 动态链接 libpng。 (Cygwin 中的 mingw64-*-libpng 包不提供静态的 libpng.a 库,这是不寻常的。)

例如,对于 64 位构建:

$ export CC=x86_64-w64-mingw32-gcc
$ export CXX=x86_64-w64-mingw32-g++
$ export PATH="/usr/x86_64-w64-mingw32/sys-root/mingw/bin:$PATH"
$ export CFLAGS="-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -lpng -Wl,Bdynamic"
$ export CXXFLAGS="$CFLAGS"
$ which libpng-config
/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpng-config
$ ./configure

编辑:在编译之前将 redist 文件夹添加到 PATH,其中包含 libpng.dll 文件,这是适用于 Cygwin 和 MSYS 环境的重要的非显而易见的步骤。

关于c++ - MinGW/msys,链接器 (ld.exe) 没有找到 libpng (-lpng),即使它已安装,正在运行 xpdf 配置脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com