首页 > 解决方案 > 使用 mingw64 交叉编译 - 通配符扩展

问题描述

我正在尝试使用他们的 mingw64 交叉编译器从 Fedora 交叉编译适用于 Windows 的 GNU grep。这个过程真的很简单,只有一个例外。默认情况下,mingw64 似乎不会在命令行上扩展通配符,因此会grep FOO *给出“无效参数:*”而不是搜索当前目录中的所有文件。

经过一番研究,我发现_dowildcard在mingw64 CRT中有一个外部符号,如果设置为-1,它将触发通配符扩展。但是我没有找到关于如何设置它的有用文档(可能是因为它被认为是显而易见的 ;-))。

我可以修改源代码来设置变量,但如果可能的话,我更希望不必修改源代码。(我想建立一个自动构建,并且应用代码补丁只会增加我想避免的复杂性)。有什么方法可以_dowildcard从 configure 或 make 命令行进行设置?我似乎记得旧版本的 mingw 有一个setargv.obj文件可以链接到您的项目以启用通配符扩展 - mingw64 有类似的东西吗?

标签: fedoraautoconfmingw-w64

解决方案


来自上述@ssbssa 的回答:

CRT_glob.omingw 软件包提供了一个文件文件,位于/usr/x86_64-w64-mingw32/sys-root/mingw/lib/CRT_glob.o(或 32 位的相应位置)中,您可以将其与可执行文件链接以激活命令行通配符。

您必须通过完整路径名指定文件,链接器才能找到它。


推荐阅读