首页 > 解决方案 > 编译示例时出现 libGD 错误“不支持 PNG”

问题描述

不知道如何告诉编译器找到 PNG。

示例“arc.c”来自 libgd-2.2.5/examples 目录。我安装了 gd-devel:# yum install gd-devel. 我什至尝试使用 ./configure、make、make install 安装 libgd-2.2.5;它安装在“/usr/local”中。仍然,我得到这个错误:像这样编译“arc.c”时出现“不支持PNG”:

[none@localhost ~]$ gcc arc.c -I/usr/local/include -L/usr/local/include -lgd

[none@localhost ~]$ ls

a.out arc.c arc.o

[none@localhost ~]$ ./a.out

no PNG support

/usr/local/lib 的内容:<< libgd.a libgd.la libgd.so libgd.so.3 libgd.so.3.0.5 >>

此外,检查是否有 PNG 支持,使用:

[none@localhost ~]$ ldconfig -p | grep libpng

libpng16.so.16 (libc6,x86-64) => /lib64/libpng16.so.16

上面写着“PNG支持”已安装。

arc.c

01  #include "gd.h"
02  #include <stdio.h>
03  #include <stdlib.h>
04
05  int main()
06  {
07      gdImagePtr im;
08      FILE *fp;
09      int cor_rad = 60;
10      im = gdImageCreateTrueColor(400, 400);
11      gdImageFilledRectangle(im, 0, 0, 399, 399, 0x00FFFFFF);
12
13      gdImageFilledArc (im, cor_rad, 399 - cor_rad, cor_rad *2, cor_rad *2, 90, 180, 0x0, gdPie);
14
15      fp = fopen("b.png", "wb");
16      if (!fp) {
17          fprintf(stderr, "Can't save png image.\n");
18          gdImageDestroy(im);
19          return 1;
20      }
21  #ifdef HAVE_LIBPNG
22      gdImagePng(im, fp);
23  #else
24      printf("No PNG support. Cannot save image.\n");  
25  #endif
26      fclose(fp);
27
28      gdImageDestroy(im);
29      return 0;
30  }

显然,错误来自第 21 和 24 行。“#ifdef HAVE_LIBPNG”在哪里得到验证?

如何告诉编译器找到 PNG 支持?

标签: c

解决方案


推荐阅读