【问题标题】:Building Cairo for Windows with MinGW (Problems linking libpng)使用 MinGW 为 Windows 构建 Cairo(链接 libpng 的问题)
【发布时间】:2011-01-10 04:54:07
【问题描述】:

我正在尝试使用 MinGW(和 MSYS)在 Windows 上构建 cairo。我遵循Compiling GTK+ 2.16.4 for Windows 上的说明,但我尽可能使用最新版本,即:

  • zlib-1.2.3
  • libpng-1.2.42
  • pixman-0.17.4
  • cairo-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: *** [all] 错误 2

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

【问题讨论】:

  • 好吧,事实证明我的 libpng 构建被破坏了。当我将它与我不久前在另一台机器上完成的构建进行比较时,我注意到“libpng12.dll.a”太小了(sourceforge.net/projects/gnuwin32) 获取工作版本。
  • 快速跟进:同样的事情发生在另一个库 (libcroco) 上,所以我认为我的 MinGW/MSYS 有问题。构建完成且没有错误消息,但 *.dll.a 文件最终小于应有的大小,并且每当另一个程序尝试使用这些库时,它在链接期间都会失败。我不知道出了什么问题,我以前用过MinGW,从来没有遇到过这个问题。这可能与我使用 Windows 7(与我之前使用的 Windows XP 不同)有关,但我没有在网上找到任何说这可能会导致问题...

标签: build makefile mingw cairo libpng


【解决方案1】:

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

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

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

【讨论】:

  • 就在我认为我已经明白了这一切的时候:虽然使用 MinGW Portable 解决了我的 libpng 问题,但 libcroco 的问题仍然存在......
【解决方案2】:

我注意到“libpng12.dll.a”太小了(

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-05-11
  • 2020-04-20
  • 2020-02-23
  • 2011-02-19
  • 2010-10-04
  • 2020-10-02
  • 1970-01-01
相关资源
最近更新 更多