【问题标题】:Win executable runs but calling command stalls on Cygwin command lineWin 可执行文件运行但在 Cygwin 命令行上调用命令停止
【发布时间】:2012-08-10 02:43:08
【问题描述】:

我正在为 TI 芯片重建闪存加载程序实用程序,但遇到了一个影响我的工作流程的小问题。我正在使用 64 位 Win7 PC 并在 cygwin bash shell 上使用 make 重建该实用程序。 make 和 cygwin 版本号如下。

$ make -v
GNU Make 3.82.90
Built for i686-pc-cygwin
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ uname -a
CYGWIN_NT-6.1-WOW64 DEEDAA 1.7.15(0.260/5/3) 2012-05-09 10:25 i686 Cygwin

构建过程中的一个步骤调用先前生成的实用程序(Windows 可执行文件)来生成 TI 处理器所需的 bin 文件。

../../AISUtils//HexAIS_OMAP-L138.exe -ini ../sft_hexais.ini -o ../sft_C6748_SPI_MEM.bin ../sft_C6748_SPI_MEM.out

调用此命令后,在 cygwin 命令行上看不到任何进展。但是,该命令的执行确实完成,生成此步骤中指定的文件并继续执行 makefile 中的后续步骤。只是我永远无法重新控制这个窗口。我总是需要杀死窗口,启动另一个 cygwin 实例。

如果我尝试立即终止 cygwin 窗口,我会收到以下消息。

mintty
Processes are running in session
Close anyway?

如果我等待一段时间(完成后续步骤的时间),那么我可以在不弹出此消息的情况下终止窗口。

Windows 命令行上的相同命令执行时没有任何停顿,我确实重新获得了我的命令行。

    c:\ti\boot_tools\OMAP-L138_FlashAndBootUtils_2_40\OMAP-L138\GNU\AISUtils>HexAIS_OMAP-L138.exe -ini ..\sft\sft_hexais.ini
     -o ..\sft\sft_C6748_SPI_MEM.bin ..\sft\sft_C6748_SPI_MEM.out
    -----------------------------------------------------
       TI AIS Hex File Generator for OMAP-L138
       (C) 2012, Texas Instruments, Inc.
       Ver. 1.27
    -----------------------------------------------------

Begining the AIS file generation.
AIS file being generated for bootmode: UART.
Parsing the input object file, ..\sft\sft_C6748_SPI_MEM.out.
AIS file generation was successful.
Wrote 15464 bytes to file ..\sft\sft_C6748_SPI_MEM.bin.
Conversion is complete.

在我看来,命令的构造方式是将命令推送到另一个 shell 或强制它在后台运行。关于可能发生的事情或我可以尝试调试问题的步骤有什么想法吗?

停滞的可执行文件的文件格式

$ file AISUtils/HexAIS_OMAP-L138.exe
AISUtils/HexAIS_OMAP-L138.exe: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows

链接到解释构建过程的 TI wiki。该链接提供了有关重建实用程序的一般说明,并且不太可能提供与我的问题相关的任何具体信息。我只包括它以防有人需要更多关于工具或过程的背景。

http://processors.wiki.ti.com/index.php/Rebuilding_the_Flash_and_Boot_Utils_Package

谢谢。

【问题讨论】:

    标签: bash windows-7 makefile cygwin


    【解决方案1】:

    在 Cygwin (MinTTY) 终端中运行 Windows 控制台应用程序通常是一个糟糕的主意。

    尝试在 Windows (cmd) 控制台中运行或使用 cygstart 在新窗口中启动(在 Makefile 中,-w 可能也很有用)。

    【讨论】:

    • @reinierpost:MinTTY 是为 Cygwin shell 设计的; Windows 控制台是为 cmd shell 设计的。当您将一个与另一个一起使用时,您可能会遇到令人兴奋的各种不兼容问题,因为您以不受支持和意想不到的方式使用程序,并且(几乎)总是有更好的方法来解决这些问题它(即为正确的外壳使用正确的终端)。
    • @me_and:我相信你,但指向一个列表或举一些例子会更有帮助。
    • 给出示例很难,因为 AFAIK 没有人维护这样的列表,但我知道信号处理存在问题(例如,使用 Ctrl+C 通过发送SIGINT 来终止进程)和错误处理(Bash 需要 POSIX 错误代码,cmd 需要 Windows 错误代码),例如。
    猜你喜欢
    • 2013-03-09
    • 2020-11-15
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2017-08-30
    • 2021-02-06
    相关资源
    最近更新 更多