使用MinGW为Windows构建Cairo(链接libpng时出现问题)

时间:2010-01-27 23:29:50

标签: build makefile mingw cairo libpng

我正在尝试使用MinGW(和MSYS)在Windows上构建cairo。我正在关注Compiling GTK+ 2.16.4 for Windows的指示,除非我尽可能使用最新版本,即:

  • 的zlib-1.2.3
  • 的libpng-1.2.42
  • pixman-0.17.4
  • 开罗-1.8.8

在我尝试构建实际的cairo之前,这种方法非常有效。配置成功,但在make cairo期间似乎有问题链接到我的libpng构建。过了一会儿,我得到了一长串错误,例如:

.libs/cairo-png.o: In function `png_simple_error_callback':
/home/user/cairo-1.8.8/src/cairo-png.c:95: undefined reference to `png_get_error_ptr'
.libs/cairo-png.o: In function `png_simple_warning_callback':
/home/user/cairo-1.8.8/src/cairo-png.c:112: undefined reference to `png_get_error_ptr'

...

.libs/cairo-png.o: In function `stream_read_func':
/home/user/cairo-1.8.8/src/cairo-png.c:686: undefined reference to `png_error'
collect2: ld returned 1 exit status
make[3]: *** [libcairo.la] Error 1
make[3]: Leaving directory `/home/user/cairo-1.8.8/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/user/cairo-1.8.8/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/user/cairo-1.8.8'
make: *** [all] Error 2

我尝试使用旧版本的libpng(1.2.40,由The GTK+ Project分发的版本),结果相同。当我运行“pkg-config -cflags -libs libpng”时,我得到“-IC:/ MinGW / include / libpng12 -LC:/ MinGW / lib -lpng12”,这似乎是正确的。我确定我犯了一些愚蠢的错误,但我不知道它是什么。

2 个答案:

答案 0 :(得分:2)

显然这是一个已知问题。我不知道怎么设法错过它,因为它在我追随的blog中甚至被提及(我认为可以安全地假设这也适用于Windows 7,因为我尝试了第三个建议它解决了我的问题):

  

现在,让我们安装MinGW。请注意,由于奇怪的文件系统限制,MinGW无法在Windows Vista上平稳运行。解决方法是

      
  • 在FAT文件系统上安装MinGW,
  •   
  • 以安全模式工作,或
  •   
  • 使用据说工作良好的MinGW Portable。
  •   

答案 1 :(得分:2)

  

我注意到'libpng12.dll.a'太小了(<1kb)。

由于libpng.vers中的符号不​​正确(符号在开头有额外的_)。在libpng构建之后,我删除了额外的_并手动重新创建了libpng12.dll.a - 现在大小正常。 但是......正确的导入库无法解决您(和我的)问题。