如何强制 make 在 Windows/MSYS2 上使用 bash 作为 shell

2024-01-03

我正在尝试重新编译一个已经有 Windows 端口的应用程序(所以它应该可以工作)

当然,你还需要运行./configure所以你需要 MSYS 或 MSYS2。

配置部分运行良好。现在当我跑步时make -n(所以它显示执行了哪些规则)我得到:

$ make -n
if test ! -f config.h; then \
  rm -f stamp-h1; \
  make stamp-h1; \
else :; fi
! was unexpected
make: *** [config.h] Error 255

! was unexpected是法语消息的近似翻译(因此可能略有不同),但让我想起了神秘的 Windows 批处理文件消息。所以我想make使用 Windows 本机 shell 运行其命令行(对于大多数简单命令来说这不是问题,但当它依赖于类似 bash 的 shell 时则不是问题),通过使用 make debug 模式确认了这一假设:

$ make -d
GNU Make 3.82
Built for i686-pc-mingw32
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
<I'll spare you that boring part then:>
Invoking recipe from Makefile:164 to update target `config.h'.
Creating temporary batch file C:\msys64\tmp\make11752-1.bat
Batch file contents:
        @echo off
        if test ! -f config.h; then   rm -f stamp-h1;   make stamp-h1; else :; fi

从制作文档来看,make采取SHELL环境。变量考虑在内。

SHELL被设置为unix风格的路径,但我尝试用$ export SHELL="C:/msys64/usr/bin/bash.exe"反映本机 Windows 路径(make可能不知道 MSYS2)但无济于事)

那么如何告诉make to use bashshell 而不是 Windows shell ?


专为 i686-pc-mingw32 打造

该行意味着您使用了错误版本的 GNU Make。您正在使用为 MinGW 运行时构建的一个,而不是为 MSYS2 运行时(Cygwin 的一个分支)构建的一个。

确保你跑了pacman -S make安装正确版本的 GNU Make,然后运行which make并确保它返回/usr/bin/make。新的品牌应该将自己标识为“Built for x86_64-pc-msys”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 make 在 Windows/MSYS2 上使用 bash 作为 shell 的相关文章

  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • “以管理员身份运行”时的 Windows 批处理文件起始目录

    我有一个位于目录中的批处理文件 也必须从那里运行 因为它会更新该目录中的文件 这工作得很好 除非用户以管理员身份运行批处理文件 Vista 上需要 那么起始目录是C Windows System32 有什么办法仍然能够知道批处理文件是从哪个
  • PHPStorm - 无效的后代文件名

    我正在尝试将 Windows 7 PC 上的本地 PHPStorm 项目与 Ubuntu 服务器同步 当我尝试任何类型的连接 例如 测试 SFTP 连接 时 它会失败并显示 Invalid descendent file name C np
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 具有类型推断功能的 Lisp 静态类型方言,适用于 Windows?

    是否有静态类型的 Lisp 方言可以执行类型推断并与 Windows 兼容 我找到了 CMUCL 但它似乎没有 Windows 兼容版本 看一下SBCL http www sbcl org它源自 CMUCL 它通过类型声明对静态类型提供良好
  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • 如何在 OS X 上查看 $PATH 变量的当前值?

    PATH returns bash usr local share npm bin Library Frameworks Python framework Versions 2 7 bin usr local bin usr local s
  • 查找所有 DHCP 和 DNS 服务器

    我有一位客户要求我找到他所有的 Dhcp 和 DNS 服务器以及一些附加信息 例如 DC 服务器和操作系统 所以我决定尝试提高我的 powershell 技能 但我对此还很陌生 所以我写了这个脚本 但我想仍然缺少一些东西 因为它不起作用 编
  • 使用 Rust 构建的 DLL 在运行时是否需要 libgcc.dll?

    如果我构建一个 DLLRust 语言 http rust lang org 是否需要libgcc dll在运行时出现 一方面 我在互联网上的某个地方看到过一个帖子 声称是的 rustc exe has libgcc s dw2 1 dll在
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • Java - 使用 JNA 的 Windows 任务栏 - 如何将窗口图标 (HICON) 转换为 java 图像?

    我正在尝试将应用程序切换器添加到我正在处理的更大项目中 它需要在 Windows XP Vista 7 8 上运行 我正在使用 Java 1 7 下面是我创建的一个示例应用程序 用于演示我遇到的一些问题 我对 JNA 很陌生 非常感谢 充满
  • Powershell:获取 FQDN 主机名

    我想通过 powershell 脚本检索 Windows 服务器的 FQDN 名称 到目前为止我已经找到了2个解决方案 server Invoke Command ScriptBlock hostname 上面的行将仅打印服务器的短名称 s
  • Windows批处理脚本启动程序并退出控制台

    我有一个用于启动程序的批处理脚本 例如notepad exe 当我双击这个批处理文件时 记事本正常启动 但是黑窗cmd谁发起的notepad exe仍然在后台 我需要做什么才能启动notepad exe并使cmd窗口消失 edit 比使用更
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • 数组上的 Bash 子字符串扩展

    我有一组带有给定后缀的文件 例如 我有一组带有后缀的pdf文件 pdf 我想使用子字符串扩展来获取不带后缀的文件名 对于单个文件我可以使用 file test pdf echo file 0 4 要对所有文件执行此操作 我现在尝试 file
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc
  • 每当 SQLERROR 永远不起作用时

    我不知道可能是什么原因 我已经在网上花了几个小时试图找出我的情况出了什么问题 我查过官方文档 https docs oracle com cd B19306 01 server 102 b14357 ch12052 htm还有一些汤姆 凯特
  • Windows 10:任务栏中的图标大小错误

    从 Windows 10 开始 任务栏中的图标大小似乎为 24x24px 如果 Windows 选择图标文件中的 24px 版本进行显示 那么这不会有问题 但它选择了 32px 版本并将其缩小 这会导致丑陋的伪像 尤其是当你的图标中有直线时

随机推荐

  • 为什么将对象推向向量时会被破坏?

    我想知道为什么我推回到向量中的元素会在这种情况下调用其析构函数 include
  • 为什么 {{ isNan(x) }} 在 angularJS 中不起作用?

    请注意 此问题的标题已更改为更关注确切问题的标题 请参阅评论流以了解它是如何发生的 我意识到问题是 AngularJS 似乎无法处理 isNaN 我的 HTML 中有以下内容 xx option selectedSubject yy opt
  • Hibernate API 中的 ElementCollection createAlias

    有谁知道是否以及如何解决以下问题 https stackoverflow com questions 2735071 hibernate criteria api adding a criterion string should be in
  • 为什么 Haskell(有时)被称为“最佳命令式语言”?

    我希望这个问题是切中主题的 我尝试寻找答案 但没有找到明确的答案 如果这恰好偏离主题或已经得到回答 请审核 删除它 我记得听过 读过关于 Haskell 的半开玩笑的评论最佳命令式语言几次 这当然听起来很奇怪 因为 Haskell 通常以其
  • Node.js - 为什么每个请求我的回调都会被调用 3 次?

    这是我的第一个节点应用程序 我实际上刚刚开始研究 API 来了解它的全部内容 我立即对以下服务器代码和控制台输出感到困惑 有人可以解释为什么我的 console log 在浏览器刷新时出现 3 次吗 var http require htt
  • SqlAlchemy 相当于使用 FreeTDS 的 pyodbc 连接字符串

    以下作品 import pyodbc pyodbc connect DRIVER FreeTDS Server my db server Database mydb UID myuser PWD mypwd TDS Version 8 0
  • 在 C# 中向 DateTime 添加天数

    C 可以添加日期吗 DateTime Today ToLongDateString 10 我尝试过这个 但它不起作用 您想添加天数吗 DateTime newDate DateTime Today AddDays 10 请注意 您会得到一个
  • Android 上的 wifi-direct 终端连接到对等点?

    有没有办法通过 Wifi Direct 终止与对等方的连接 我尝试了cancelConnect和removeGroup 两人都回来了 忙吗 谢谢 这是我用来断开与同伴的连接的方法 我从日志中注意到 Android 内置应用程序也使用相同的方
  • 抽屉式导航 - 禁止点击抽屉后面的项目

    有什么方法可以确保导航抽屉位于片段中内容的顶部 我使用虚拟数据创建了一个小型测试应用程序 10 个片段 带有相应的编号按钮和文本视图 问题在于片段元素似乎比导航抽屉具有更高的优先级 如屏幕截图所示 一旦我尝试打开 0 片段 它就会选择注册导
  • Bower 自动更新 Bower.json

    我使用 Bower 1 0 0 运行以下命令 mkdir testdir cd testdir bower init accept defaults bower install jquery s the s is supposed to c
  • 使用 jQuery AJAX 捕获 404 状态

    我有这个代码 ajax cache false url Admin Contents GetData data accountID AccountID success function data CityID html data error
  • Zend框架中的重定向和转发有什么区别

    Zend 框架中的重定向和转发有什么区别 什么时候应该使用重定向 什么时候应该使用转发 想象一下您在办公室接到一个电话 有人想与销售人员交谈 如果你说 请拨打123456 然后挂断 这是redirect 如果您说 稍等 并将电话转接给他们
  • C# 中的字符串基准 - 重构速度/可维护性

    我一直在用自己的时间摆弄小函数 试图找到重构它们的方法 我最近读了 Martin Fowler 的书重构 改进现有代码的设计 https rads stackoverflow com amzn click com 0201485672 我发
  • ologit 的 vglm()、orm()、polr() 和 clm() 中的系数

    我正在使用不同的软件包进行 ologit 它们是VGAM rms MASS and ordinal 使用数据集wine从包装中ordinal 首先是vglm library VGAM vglmfit lt vglm rating temp
  • 使用 jQuery 获取 XML 中的节点值

    我正在尝试解析以下 XML
  • ibpy:如何捕获从reqAccountSummary返回的数据

    我正在使用交互式代理的 ibapi 并且一般情况下我陷入了如何捕获返回数据的困境 例如 根据api docs https interactivebrokers github io tws api account summary html a
  • R - 条件增量

    这对代码来说应该是微不足道的 但无法在 R 中想到优雅的单行代码 我有一个数据框 如下所示 data lt data frame index seq 1 20 event rep 0 20 data event 10 lt 1 data e
  • 使用 leaflet 包在 R 中绘制等值线图

    我正在尝试使用 leaflet 包在 R 中创建交互式 Choropleth 地图 我的最终输出应该是这样的 当用户单击美国的任何一个州时 应该显示一个弹出窗口 其中包含州名称和相应州的震级值 下面是我正在使用的代码 我面临的问题是 每当我
  • PrimaryContext LDAPS 自签名证书

    我们有一个应用程序 使用 LDAP 通过 IP 地址 通过 VPN 隧道对远程 AD 进行身份验证 使用以下代码 using PrincipalContext pc new PrincipalContext ContextType Doma
  • 如何强制 make 在 Windows/MSYS2 上使用 bash 作为 shell

    我正在尝试重新编译一个已经有 Windows 端口的应用程序 所以它应该可以工作 当然 你还需要运行 configure所以你需要 MSYS 或 MSYS2 配置部分运行良好 现在当我跑步时make n 所以它显示执行了哪些规则 我得到 m