3

我正在尝试使用 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:在函数“png_simple_error_callback”中:
/home/user/cairo-1.8.8/src/cairo-png.c:95:未定义对“png_get_error_ptr”的引用
.libs/cairo-png.o:在函数“png_simple_warning_callback”中:
/home/user/cairo-1.8.8/src/cairo-png.c:112:未定义对“png_get_error_ptr”的引用

...

.libs/cairo-png.o:在函数“stream_read_func”中:
/home/user/cairo-1.8.8/src/cairo-png.c:686:未定义对“png_error”的引用
collect2: ld 返回 1 个退出状态
make[3]: *** [libcairo.la] 错误 1
make[3]: 离开目录`/home/user/cairo-1.8.8/src'
make[2]: *** [all] 错误 2
make[2]: 离开目录`/home/user/cairo-1.8.8/src'
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录`/home/user/cairo-1.8.8'
make: *** [全部] 错误 2

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

4

2 回答 2

2

显然这是一个已知问题。我不知道如何设法错过它,因为它甚至在我关注的博客中提到(我认为可以安全地假设这也适用于 Windows 7,因为我尝试了第三个建议并且它修复了我的问题):

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

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

于 2010-02-12T21:44:15.487 回答
2

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

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

于 2010-11-23T14:22:03.210 回答