gpt4 book ai didi

c - 如何为 Windows 创建可执行 C 文件

转载 作者:可可西里 更新时间:2023-11-01 10:04:18 24 4
gpt4 key购买 nike

我知道这个问题已经被问过好几次了,我看了很多,比如

不幸的是,它们都不适合我。

我的情况

我已经在我的笔记本上安装了 Ubuntu 和 Windows。

  • 假设我使用 c 语言的文本编辑器开发了一个简单的“Hello,World!”程序。
  • 在 Ubuntu 中,我使用 GCC 编译了它$ gcc -o hello.out -g -Wall -pedantic hello.c
  • 我执行了 './output.out'
  • 并得到结果 Hello, World!

我尝试了什么

所以我在这里进行了交叉开发。我切换到 Windows 并继续前进。

现在,我尝试将其设为可执行文件以便在 Windows 上运行它。我知道 Windows 无法处理 '$ ./output.out' ,好吧,那我们让它成为可执行文件吧。

在 Windows 下,我已经

  • 已安装 cygwin
  • 在 Cygwin 中,我使用 GCC 编译它$ gcc -o hello.exe -g -Wall -pedantic hello.c

注意:我写的是hello.exe而不是hello.outhello.c

  • 在 Cygwin 中,我执行了 '$ ./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)

如果你需要一个独立的程序,一个解决方案是使用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)

您可以将生成的程序移动到另一台没有安装 cygwin 的 Windows 机器上。

关于c - 如何为 Windows 创建可执行 C 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com