作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试图在 Windows 上使用 MinGW 编译一个非常简单的程序,但我仍然遇到链接错误。要编译的程序只是 C++ hello world。
Z:\dev>type test.cpp
#include <iostream>
int main() {
std::cout << "Hello World!\n";
return 0;
}
当然,只用MinGW的g++就可以了。
Z:\dev>g++ test.cpp -o test.exe
Z:\dev>test.exe
Hello World!
然而,我试图将编译和链接分开,但失败了。
Z:\dev>g++ -c test.cpp -o test.o
Z:\dev>ld test.o -o test.exe
test.o:test.cpp:(.text+0xa): undefined reference to `__main'
test.o:test.cpp:(.text+0x19): undefined reference to `std::cout'
test.o:test.cpp:(.text+0x1e): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& s
<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
test.o:test.cpp:(.text+0x37): undefined reference to `std::ios_base::Init::~Init()'
test.o:test.cpp:(.text+0x5a): undefined reference to `std::ios_base::Init::Init()'
test.o:test.cpp:(.text+0x66): undefined reference to `atexit'
很明显我错过了一些库。所以,我尝试链接了几个 MinGW 的库,但仍然没有用,例如 -lmsvcrt
。我也做了 lstdc++
,但仍然找不到 __main
和大量警告消息。
你能帮我看看哪些库应该链接在一起吗?
最佳答案
尝试使用g++
链接,而不是使用ld
。
试试这个:
Z:\dev> g++ -c test.cpp -o test.o
Z:\dev> g++ -o test.exe test.o
关于c++ - 使用 MinGW 编译器时出现链接错误(找不到 __main),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981826/
/* test.c */ void func1() { } int main() { func1(); } 您好,我正在使用 C 语言编写内核代码。但是我测试了上面的代码以了解如何构建 C 内核
当使用 MinGW 编译一个空的 c 程序时,汇编输出包含以下行 call __main 这是哪个图书馆的?我希望与 msvcrt.dll 的链接能够正常工作(使用 ld 进行链接),但它没有,所以它
我试图在 Windows 上使用 MinGW 编译一个非常简单的程序,但我仍然遇到链接错误。要编译的程序只是 C++ hello world。 Z:\dev>type test.cpp #includ
我是一名优秀的程序员,十分优秀!