未找到 MinGW msys 包:一般建议如何进行

Posted

技术标签:

【中文标题】未找到 MinGW msys 包:一般建议如何进行【英文标题】:MinGW msys package not found: General advice how to proceed 【发布时间】:2016-03-14 21:35:09 【问题描述】:

我时不时地想用 mingw 从源代码编译一些东西(在 Windows 上)。我打开 msys,输入 ./configure,它说

checking for...xxxxxx

我有第一个问题:

mingw 在哪里检查? 它检查什么? .dll、.a、.o.、...什么?

偶尔会出现类似

的错误
configure: error: Package requirements <ogg >= 1.3> were not met:
No package 'ogg' found.

然后我用谷歌搜索“你可以输出默认查找目录”,好吧,我输入 gcc -print-search-dirs 并查看目录列表,例如 C:/mingw/lib、C:/mingw/lib/gcc , ...

这些文件夹包含.a-文件。你猜怎么着,其中一些还包含libogg.a。那它为什么抱怨呢?也许版本号?不,我下载了最新的源代码并编译了它,并将 .a 文件放入目录中。同样的错误。它让我疯狂!请给点建议。

【问题讨论】:

【参考方案1】:

传统上,通常情况下,当./configure 脚本检查一个库时, 您正在配置的包需要链接,它至少检查库本身的存在和可用性,以及 对于库的头文件,没有它编译器不能使用 库的 API。 (我通常说,因为任何给定的./configure 检查 实际上是由包维护者编写的。它与您的编译器无关)。

检查libfoobar 的存在性和可用性通常意味着./configure 检查在文件系统中搜索libfoobar.dlllibfoobar.a 或任何。这意味着./configure 检查只是尝试在安装libfoobar 时,使用适合这样做的命令来编译和链接样本程序与libfoobar

通常(并且越来越多),./configure 检查库 libfoobar 会调用 pkg-config 工具尝试 检索正确的编译器和链接器标志以用于libfoobar。为了使这次尝试成功,pkg-config 元数据 与库包关联的文件 foobar.pc 必须在标准中找到 放置在文件系统中,例如/usr/lib/pkgconfig, /usr/share/pkgconfig

对于库,加上它的标题,加上它的pkg-config 元数据(如果有的话) 全部可用于./configure 有必要安装 developmentlibfoobar,而不是基本包。开发包 通常与基本包具有相同的名称,并添加了-dev-devel 组件,例如libfoobar-dev

如果./configure 检查失败并出现以下错误:

No package 'foobar' found.

这意味着检查试图检索pkg-config 元数据 foobar 没有找到。这通常是因为发展 未安装包 libfoobar-dev,即使 libfoobar 已安装。

【讨论】:

以上是关于未找到 MinGW msys 包:一般建议如何进行的主要内容,如果未能解决你的问题,请参考以下文章

MSYS2/MinGW64 中的 ICU 58 未定义参考

我在windows下安装了MinGW和msys,并在桌面上有了mingw shell的图标,请问我怎么才能应用vim来写程序呢

win10安装msys2(转)

msys2 找不到 mingw64

msys2-x86_64搭建QT Mingw64编译环境

如何安装 MinGW-w64 和 MSYS2?