【问题标题】:How can I run "myfile.exe" as a standalone executable file without running "Startxwin" on Cygwin?如何在 Cygwin 上不运行“Startxwin”的情况下将“myfile.exe”作为独立的可执行文件运行?
【发布时间】:2015-03-27 21:46:27
【问题描述】:

我有在 Cygwin 中创建的“myfile.exe”。当你运行它时,会弹出一个黑色窗口并显示:

正在解析...

正在解析...

。 . .

无法打开显示!

所以,我发现我需要通过Cygwin运行这个可执行文件并输入:

'startxwin'

然后会弹出一个白色窗口,从那里我可以通过输入运行“myfile.exe”:

'./myfile.exe'.

但是,当我拥有“myfile.exe”的最终版本时,我希望最终用户只需单击一次即可运行它并运行程序!

在 StackOverFlow 中我找不到类似的问题,但我的直觉告诉我,我可能能够在 Cygwin 文件夹的某个位置自动构建“startxwin”或找到其他解决方案!

那么,您认为以下哪个选项更可行:

  1. 编写一段代码,在 Cygwin 文件夹中创建一个“内置”startxwin,当您使用“make all”时,它会自动为您提供创建独立可执行文件的机会?

  2. 或者还有其他方法可以做到这一点,例如找到另一个 Linux 编译器,例如 MinGW 等并在那里尝试?

****请不要建议我在 Visual Studio 或基于 Windows 的 IDE 中编译我的文件,因为原始文件使用 FLTK 并且它们是基于 Linux 的!

【问题讨论】:

  • 您可以将 startxwin myfile.exe 添加到您的 .bash_profile ... 然后它应该在您打开 Cygwin 时启动。您可能还想添加检查以确保它尚未运行。
  • Markku 我应该在我的 '.bash_profile' 中使用 if 语句吗?或者干脆使用 startxwin myfile.exe?
  • 这取决于你想要什么。一种可能性是你可以在你的 .bash_profile 中添加这样的内容:[ -e startMyFile ] && ./startMyFile。然后将startx myfile.exe 放入一个名为startMyFile 的文件中。 .bash_profile 中的行仅在 startMyFile 脚本存在时才会执行。
  • Markku,我想让 MyFile.exe 在单击后运行!所以假设我有你所说的命令行: [ -e startMyFile ] && ./startMyFile 但是,我没有得到你提到的文件。你说:把 startx myfile.exe 放在一个名为 startMyFile 的文件中 你在说什么文件?
  • 我把这个想法的大纲放在一个答案中——在那里更容易阅读。答案不使用 startMyFile 文件,只使用 .bash_profile 和您的可执行文件。

标签: linux cygwin executable x11


【解决方案1】:

你有两个问题需要处理:

  1. 您的可执行文件必须在 Cygwin 子系统中运行
  2. 您的可执行文件还需要 X11 显示器

处理这些问题的一种方法是让 Cygwin 在启动时调用 startxwin 和您的程序。然后,当您双击 Cygwin 桌面图标时,您的程序也会启动。为此,您可以将以下内容添加到 Cygwin 中的 .bash_profile 文件中:

[ -e ~/myFile.exe ] && startxwin ~/myFile.exe

这表示,如果 ~/myFile.exe 存在,则使用 ~/myFile.exe 作为参数调用 startxwin(启动 X11)。这告诉startxwin 在 X11 系统准备就绪后启动 myFile.exe

【讨论】:

  • Markku,我猜我把你的命令行放在了 bash 文件中的错误位置,或者我有语法错误。这是我按照您的建议添加的内容: [ -e ~/calibrator.exe ] && startxwin ~/calibrator.exe 我已将其添加到“_bash_profile”的底部。不过也有一句话说:你觉得呢?
  • 如果没有更多信息很难诊断。进入 Cygwin,输入 cat ~/.bash_profile,然后在此处复制/粘贴结果。
  • # 依赖于用户的 .bash_profile 文件 # 获取用户的 bashrc if [ -f "${HOME}/.bashrc" ] ; then source "${HOME}/.bashrc" fi # 设置 PATH 使其包含用户的私有 bin(如果存在) # if [ -d "${HOME}/bin" ] ;然后 # PATH="${HOME}/bin:${PATH}" # fi # 设置 MANPATH 以便它包含用户的私人 man(如果存在) # if [ -d "${HOME}/man" ];然后 # MANPATH="${HOME}/man:${MANPATH}" # fi # 设置 INFOPATH 使其包含用户的私有信息(如果存在) # if [ -d "${HOME}/info" ];然后 #INFOPATH="${HOME}/info:${INFOPATH}" #fi [ -e ~/calibrator.exe ] && startxwin ~/calibrator.exe
  • 好的,这在评论中表现不佳。试试这个:[ -e "${HOME}/calibrator.exe" ] && startxwin "${HOME}/calibrator.exe"。然后确保 calibrator.exe 与 .bash_profile 位于同一目录中。
  • 我这样做了。还是没有进展! :(
猜你喜欢
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2018-01-22
相关资源
最近更新 更多