c - 如何将 Windows 中的简单程序与 Mingw GCC 链接

标签 c windows gcc linker mingw

我有一个简单的“Hello World!” c 程序,在我的桌面上名为 hello.c:

#include <stdio.h>

int main() {
    printf("Hello world!\n");

    return 0;
}

我运行以下命令。

  • 我使用以下方法对其进行预处理:cpp hello.c > hello.i
  • 我编译它:gcc -S hello.i
  • 我将其组装为:as -o hello.o hello.s

到目前为止一切都很好。但是,我无法链接它。除了其他命令外,我已经尝试过这些:

ld -o hello.exe hello.o
ld -o hello.exe hello.o -lgcc
ld -o hello.exe hello.o -nostdlib -lgcc

没有任何作用。我在每种情况下遇到的链接错误是:

hello.o:hello.c:(.text+0x9): undefined reference to `__main'
hello.o:hello.c:(.text+0x15): undefined reference to `puts'

如何链接这个汇编程序hello.o,最终生成可执行程序hello.exe?我错过了什么? [使用 Windows 8.1,Mingw 版本 0.6.2。]在此先感谢。

最佳答案

即使您对澄清问题的回答不是特别有用:

尝试类似的东西

ld hello.o -lmsvcrt -entry=_main -subsystem=console -o hello.exe

如果您想查看标准 gcc 使用的链接器命令行,请像这样调用 gcc:

gcc test.c -o test -Wl,-v

最后一行输出是你应该使用的......

关于c - 如何将 Windows 中的简单程序与 Mingw GCC 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39767917/

相关文章:

multithreading - openmp 并行 for 循环的性能出乎意料的好

c - C 中如何返回 void* 指针?

c++ - 在文本文件上调用 ReadFile,得到奇怪的(日语?)字符

c - C语言编程解密md5

c - 从字符串中读取数字列表

windows - 强制谷歌浏览器使用本地语音识别引擎

c++ - C 在 Windows 上获取微秒级精度的系统时间?

windows - 如何在 git bash 中设置环境变量?

c - 笔记本电池状态?

c - 是否(不)可以在 C 源代码中使用特殊字符?