【问题标题】:Issue linking to libpng when trying to make pngnq on Linux尝试在 Linux 上制作 pngnq 时出现链接到 libpng 的问题
【发布时间】:2012-02-17 14:33:49
【问题描述】:

我正在尝试安装 pngnq,它依赖于 libpng >= 1.2.8。我已经通过./configuremakesudo make install 安装了libpng 1.5.7(没有问题),因为软件中心的libpng 版本太旧了。我现在正在尝试通过./configuremakesudo make install 安装pngnq(同样,因为软件中心版本太旧了),但在我认为与错误消息相关的make 步骤上卡住了到libpng 链接。错误消息的一小部分示例:

undefined reference to `png_destroy_write_struct'
undefined reference to `png_convert_from_time_t'
undefined reference to `png_set_PLTE'

我在 Linux 上手动安装软件的经验有限,因此我不确定下一步是什么来诊断问题。我已经进行了大量搜索,但还没有真正找到针对我遇到的问题的任何内容。根据关于类似问题的论坛帖子,我在/usr/local/lib 目录上做了一个ls 并发现:

libpng15.a   libpng15.so.15   libpng.la   libpng15.la  
libpng15.so.15.7.0   libpng.so   libpng15.so   libpng.a

虽然我不知道这是否真的有助于诊断/排除某些问题。谁能告诉我可能出了什么问题,保持我在 Linux 上编译代码的最低经验?

编辑:

根据要求,以下是从make 调用开始的跟踪示例:

bryce@whatever:~/Downloads/pngnq-1.1$ make
Making all in src
make[1]: Entering directory `/home/bryce/Downloads/pngnq-1.1/src'
make  all-am
make[2]: Entering directory `/home/bryce/Downloads/pngnq-1.1/src'
gcc `libpng-config --I_opts` -Wall --pedantic -std=gnu99 -g -O2 `libpng-config 
--ldflags` -lz  -o pngnq pngnq.o neuquant32.o rwpng.o  -lm -lz 
pngnq.o: In function `pngnq':
/home/bryce/Downloads/pngnq-1.1/src/pngnq.c:518: undefined reference to `png_get_gAMA'

【问题讨论】:

  • 你能解决这个问题吗?我在编译 pngnq 时遇到了同样的问题。
  • @ColinO'Dell 自从我看到这个以来已经很久了,但我很确定我放弃了并改用 Mac 机器上的版本。

标签: linker undefined-reference libpng


【解决方案1】:

听起来包含与库不匹配。仔细检查 /usr/include 中是否有 png.h 或 /usr/lib/ 中是否有 libpng*。

还要显示在您看到错误之前出现的 gcc 行。这可能指向问题所在。

【讨论】:

  • 我在/usr/include 中有png.h,但在/usr/lib 中没有libpng*
  • 试试这个 - 如果你是 bash 用户,导出 PATH=/usr/local/bin/:$PATH,然后重新制作.. 如果你是 csh 用户.. 我忘记了,但是基本上 /usr/local/bin 需要在你的 $PATH 中是 first 的。这应该会从 /usr/local/bin 中获取 libpng-config,这反过来会为您的应用发出正确的配置信息。
  • 按照建议尝试了export PATH=/usr/local/bin/:$PATH,但同样的错误仍然存​​在。
猜你喜欢
  • 2020-07-11
  • 2021-04-22
  • 2021-07-02
  • 1970-01-01
  • 2017-09-09
  • 2017-06-12
  • 2015-04-07
  • 2020-12-04
  • 2012-01-15
相关资源
最近更新 更多