如何阻止 NetBeans 使用 Cygwin bin 目录并使其使用 MSYS?

Posted

技术标签:

【中文标题】如何阻止 NetBeans 使用 Cygwin bin 目录并使其使用 MSYS?【英文标题】:How to stop NetBeans from using Cygwin bin directory and make it use that of MSYS? 【发布时间】:2015-05-11 22:50:02 【问题描述】:

我已经在C:\cygwin64 安装了 Cygwin,在 C:\mingw\msys\1.0\opt\windows_64 安装了 MinGW。 只有 MSYS 和 MinGW bin 目录在 PATH 变量中,Cygwin 不在。 NetBeans 配置为使用 Tools > Options > C/C++ > Build Tools 中的 MinGW 工具集合。 Make Command 选项设置为C:\mingw\msys\1.0\bin\make.exe

问题出现在我运行测试时 (Alt+F6)。我收到以下错误:

  2 [main] mkdir 888 c:\cygwin64\bin\mkdir.exe: *** fatal error - error while loading shared libraries: C: cannot open shared object file: No such file or directory
443 [main] mkdir 888 cygwin_exception::open_stackdumpfile: Dumping stack trace to mkdir.exe.stackdump

同样会出现关于rm.exegrep.exe 的错误。似乎 NetBeans 以某种方式设法找到 Cygwin 二进制文件,即使它们不在 PATH 中。导致错误的二进制文件位于 MSYS bin 目录(位于 PATH 中),但 NetBeans 看不到它们。

令人惊讶的是,测试通过了,但这些错误使编译速度过慢。

我尝试将 Cygwin 的安装目录的名称更改为其他名称,它可以工作,但不是一个好的解决方案。

那么我怎样才能让 NetBeans 忘记 C:\cygwin64\bin 而只使用 C:\mingw\msys\1.0\bin

【问题讨论】:

也许它在 netbeans PATH 中。您可能需要像 this 一样检查它。 @Thronghar 当我使用 Windows 时,我检查了 C:\Program Files\NetBeans x.x.x\etc\netbeans.conf,但没有找到其中定义的 PATH 变量或任何其他配置条目这可能会导致 NetBeans 看到 Cygwin。 我现在正面临这个问题,甚至无法在 NetBeans 中构建我的程序。 MSYS make 运行 cygwin mkdir 并且它们是 DLL 不兼容的。 2020 年仍然是个问题!! 【参考方案1】:

我遇到了同样的问题,但找不到合适的解决方案。我可以在使用 NetBeans 时做一个解决方法并重命名 cygwin 安装目录,然后它工作正常,但它很脏。我只是认为至少解决方法可能会对某人有所帮助,因为这个话题已经开放了将近两年了:)

使用 cygwin 的原因尚不清楚,但是如果您转到“工具”->“在终端中打开”,您会立即知道两件事: - 如果可行,则引用 cygwin,因为终端不能与 mingw 一起使用 - $PATH 变量以“/usr/local/bin:/usr/bin”开头,检查/usr/bin 时,有cygwin 二进制文件

我假设如果 cygwin 文件夹被重命名,/usr/local/bin 和 /usr/bin 无法提供所需的二进制文件(如 mv.exe、mkdir.exe ...)和 $PATH 中的下一个文件夹Mingw 终于出场了。

正如我所说,我找不到合适的配置。我试图在 Windows 中修改 %PATH% 变量,但没有任何运气(那里甚至没有提到 cygwin)。

【讨论】:

这个还是2020年的问题!!

以上是关于如何阻止 NetBeans 使用 Cygwin bin 目录并使其使用 MSYS?的主要内容,如果未能解决你的问题,请参考以下文章

netbeans 中的 C pthread_barriers (cygwin)

如何阻止 git 在 cygwin 上使文件不可执行?

netbeans c++程序无法运行

如何使用/在 Cygwin 中正确安装 FLTK?

NetBeans C++

Netbeans 7.0 编译器错误