Big*_*ude 5 c windows gcc cygwin visual-studio
我知道这个问题已经被问过好几次了,我看了很多,比如
不幸的是,他们都没有为我工作。
我已经在我的笔记本上安装了 Ubuntu 和 Windows。
"Hello,World!"使用 c 中的文本编辑器开发了一个简单的程序。$ gcc -o hello.out -g -Wall -pedantic hello.c'./output.out'Hello, World!所以我在这里交叉开发。我切换到 Windows 并继续前进。
现在,我尝试使它成为一个可执行文件,以便在 Windows 上运行它。我知道 Windows 无法处理'$ ./output.out',好吧,让我们将其设为可执行文件。
在 Windows 下,我已经
$ gcc -o hello.exe -g -Wall -pedantic hello.c注意:我写的是hello.exe而不是hello.out或hello.c
'$ ./output.exe'Hello, World!注意:此时,它甚至可以在 Windows 下与我的 Shell 一起使用,因为我安装了 Cygwin 并设置了我的 PATH 等。这意味着我可以打开我的命令行,转到所在的目录'hello.exe'并通过键入执行它'> hello.exe'
我以为就是这样,所以我把hello.exe'它移到另一个笔记本上(不是我的本地机器)。我试图执行它,但没有奏效。
起初,我收到一条 cygwin1.dll 丢失消息。修复后,出现另一个错误。
长话短说:我写这么多的原因是我想让你详细了解我的情况。
基本上,我正在尝试创建一个可执行的 c 文件,任何 Windows 用户都可以在没有任何开发工具的情况下执行该文件。
在 Eclipse 和 Java 中,您可以简单地导出您的程序,使其成为可运行的 -jar 文件。用户所需要做的就是安装最新的 Java SE 版本以使其运行。
此外,我尝试在 Visual Studio 中编译我的程序,但这也不起作用。
有什么建议?非常感谢!
cygwin gcc 生成链接到 cygwin1.dll 的可执行文件。所以没有它就无法使用。
gcc hello.c -o hello-cygwin.exe
$ ldd hello-cygwin.exe
ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x77bd0000)
kernel32.dll => /cygdrive/c/Windows/system32/kernel32.dll (0x77ab0000)
KERNELBASE.dll => /cygdrive/c/Windows/system32/KERNELBASE.dll (0x7fefdc60000)
SYSFER.DLL => /cygdrive/c/Windows/System32/SYSFER.DLL (0x75650000)
cygwin1.dll => /usr/bin/cygwin1.dll (0x180040000)
Run Code Online (Sandbox Code Playgroud)
如果你需要一个独立的程序,一个解决方案是使用 mingw 编译器(它可以在 cygwin 上作为 Windows 的交叉编译器)
$ x86_64-w64-mingw32-gcc.exe hello.c -o hello-mingw64.exe
$ ldd hello-mingw64.exe
ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x77bd0000)
kernel32.dll => /cygdrive/c/Windows/system32/kernel32.dll (0x77ab0000)
KERNELBASE.dll => /cygdrive/c/Windows/system32/KERNELBASE.dll (0x7fefdc60000)
SYSFER.DLL => /cygdrive/c/Windows/System32/SYSFER.DLL (0x75650000)
msvcrt.dll => /cygdrive/c/Windows/system32/msvcrt.dll (0x7fefdf40000)
Run Code Online (Sandbox Code Playgroud)
您可以将生成的程序移动到另一台未安装 cygwin 的 Windows 计算机上。
| 归档时间: |
|
| 查看次数: |
16816 次 |
| 最近记录: |