我想知道如何防止Cygwin下的gcc自动将.exe扩展名添加到编译文件中,因为我只是让自己与"丢失的文件"混淆了很多.对于上下文,我正在研究大学的C项目,我通常在运行Ubuntu的实验室工作(使用Windows进行双启动),但是在家工作我更喜欢使用我的Windows机器ergo Cygwin.如果我只是删除扩展它在任何一个系统上仍然可以正常工作,但每当我在Cygwin下编译它时,必须更改命令以包含扩展是相当令人沮丧的.
我从Cygwin查找了FAQ,发现它可能是与.bashrc或.bash_profile中的环境变量有关的问题(见这里),但我不是命令行忍者,对编辑配置文件不太熟悉.我发现两个相关的问题也表现出相同的行为,但与尝试改变它没有任何关系:
有任何想法吗?
编辑:它实际上是C项目中的MPI所以我有一个调用mpicc的Makefile,但这与问题并不相关,因为我只是尝试使用gcc,两者都做同样的事情.出于这个问题的目的,我得到的命令和输出是:
$ gcc -o hello hello.c
$ ls
hello.c hello.exe
$./hello
Hello, world!
$./hello.exe
Hello, world!
Run Code Online (Sandbox Code Playgroud)
请注意,使用或不使用扩展名运行在shell中执行相同的操作,但它不适用于mpirun,这就是我想要更改此行为的原因.
编辑:我最终认为Windows不是我的编程环境.从现在开始,可以在Linux中完成的所有工作都将是.谢谢大家.
可执行文件的自动 exe 扩展名的存在是有原因的(Windows 需要它)。您应该消除自己的困惑(又名教育:-)并接受 Cygwin 的工作方式。这是一个深深植根于 Cygwin/Windows 内部的功能,没有它几乎不可能运行。
如果您想以不同的方式体验“Windows 上的 Unix 感觉”,您可以查看AT&T 的 UWin。