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

时间:2016-09-29 10:34:40

标签: c windows gcc linker mingw

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

#include <stdio.h>

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

    return 0;
}

我运行以下命令。

  • 我预处理它: cpp hello.c&gt; 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。]提前感谢。

1 个答案:

答案 0 :(得分:1)

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

尝试类似

的内容
  

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

如果要查看标准gcc使用的链接器命令行,请调用gcc,如下所示:

  

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

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