如何在 MSYS2 上安装 libpng?

Posted

技术标签:

【中文标题】如何在 MSYS2 上安装 libpng?【英文标题】:How do I install libpng on MSYS2? 【发布时间】:2019-06-15 18:19:33 【问题描述】:

我想用 mingw w64 构建一个程序,并且我已经安装了 msys2。

我尝试在 msys2 提示符下使用 pacman。

$ pacman -Q libpng
error: package 'libpng' was not found
$ pacman -S libpng
error: target not found: libpng
$ pacman -S *libpng
error: target not found: *libpng

我尝试使用谷歌并想出了:

$ pacman -S mingw-w64-libpng
error: target not found: mingw-w64-libpng
$ pacman -F mingw-w64-libpng
warning: database file for 'mingw32' does not exist (use '-Fy' to download)
warning: database file for 'mingw64' does not exist (use '-Fy' to download)
warning: database file for 'msys' does not exist (use '-Fy' to download)
error: no options specified (use -h for help)

非常奇怪的是,在我完成所有下载之后,我清楚地记得包括 pacman 的数据库,这些数据库文件似乎不存在。

$ pacman -Fy mingw-w64-libpng
[... stuff downloads ... ]
error: no options specified (use -h for help)
$ pacman -U mingw-w64-libpng
loading packages...
error: 'mingw-w64-libpng': could not find or read package

所以现在的问题是,

1) 将来我将如何找到知名库的魔法前缀,以便能够告诉 pacman 安装什么?

2) 我现在如何指示 pacman 安装似乎在 mingw-w64-libpng 包中的 libpng 包?

3) 是带有开发头文件的包还是另一个包,就像我在 Deb/Ubuntu 上通过寻找 libpng-dev 之类的东西来调整的那样?

【问题讨论】:

【参考方案1】:

你试过pacman -Ss libpng吗?这将列出所有提到 libpng、前缀和所有的包:

$ pacman -Ss libpng
mingw32/mingw-w64-i686-libpng 1.6.35-1
    A collection of routines used to create PNG format graphics (mingw-w64)
mingw64/mingw-w64-x86_64-libpng 1.6.35-1 [installed]
    A collection of routines used to create PNG format graphics (mingw-w64)

我注意到这些名称包含架构 (i686/x86_64),这在 MinGW 包名称中相当常见。

编辑:标题在这里结束:

$ ls /mingw64/include/libpng16/
png.h  pngconf.h  pnglibconf.h

【讨论】:

我做了pacman -S git 然后安装了 git。我做了pacman -Ss libpng,它给出了与您显示的相同的输出。然后我做了pacman -S mingw-w64-x86_64-libpng,它建议安装`mingw-w64-x86_64-gcc-libs-8.3.0-2 mingw-w64-x86_64-gmp-6.1.2-1 mingw-w64-x86_64-libwinpthread-git- 7.0.0.5447.a2d94c81-1 mingw-w64-x86_64-mpc-1.1.0-1 mingw-w64-x86_64-mpfr-4.0.2-2 mingw-w64-x86_64-zlib-1.2.11-7 mingw-w64- x86_64-libpng-1.6.37-3`,如果我没看错的话,它包括了 winpthread 系统的运行时库。我安装了 mingw64 打算拥有 win32 线程。错了吗? 我可以看到pacman -S mingw-w64-x86_64-libpng 的完整输出吗?是否仍然安装了 libpng,还是坚持要您先安装这些软件包?我希望 libwinpthread 在下面使用 Windows 线程,并将其包装在类似 pthread 的界面中,但恐怕这纯粹是猜测。也许你可以问一个单独的问题?我也很想知道。 Samuel Rice 已为原始问题提供了正确答案,因此 OP 应单击复选标记以接受它。如果您现在担心这个问题,您可以提出一个关于线程模型的新问题。这里的讨论应该是重点关注的。 @DavidGrayson 如果重视重点讨论,那么它应该专注于我需要的结果。线程方面要么是这个问题的主题,因为它会影响实际成功,要么我应该删除这个问题。然后我可以重新开始,所以我提出的问题的明确目标是让 libpng 与我试图匹配的 MSYS2 系统相匹配。删除问题后,另一种选择是删除 msys2/mingw-w64 而不是再次尝试该问题。 Samuel Rice 的回答在某些情况下是正确的,但对我来说还不够。 提问后不要移动球门柱。 Samuel Rice 向您指出的 libpng 确实与 MSYS2 匹配,并且在您实际提出的问题的上下文中是正确的。 MSYS2 中的大部分 MinGW 软件都依赖于 libwinpthread。它只是重新分发时必须包含的另一个 DLL。

以上是关于如何在 MSYS2 上安装 libpng?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上安装 libpng-dev?

如何使用 yum 安装 libpng?

如何在 MSYS2 中使用 Windows Python 安装

如何使用 MSYS2 在 Windows 上安装 GTK3 和 minGW

在 MSYS2 上安装 nodejs 和 npm

如何正确安装 libpng?