编译简单的Hello World时进行多次"multiple definition of ..."
Multiple "multiple definition of ..." while compiling simple Hello World
我正在使用MinGW在Eclipse C/c++ Mars Edition中编译简单的Hello World。
代码:#include <iostream>
using namespace std;
int main(){
cout << "Hello World!" << endl;
}
编译器标志:
-I"H:EclipseWorkspaceProject" -O0 -Wall -static -static-libgcc
错误:
multiple definitions of '__gcc_deregister_frame'
multiple definitions of '__gcc_register_frame'
multiple definitions of '_argc'
multiple definitions of '_argv'
multiple definitions of '_mingw32_init_mainargs'
multiple definitions of '_onexit'
multiple definitions of 'atexit'
multiple definitions of 'mainCRTStartup'
multiple definitions of 'WinMainCRTStartup;
MinGW默认链接标准库,libstdc++为静态,libgcc为共享(因为他的根来自Unix GCC)。-static
通常是-static-libgcc
的快捷方式,相反的是-shared-libgcc
(如果编译器默认静态链接,如TDM GCC)。
这两个静态链接的组合是多余的(参见GCC链接选项),只使用static
。你只能得到这几个符号,因为优化器会丢弃那些没用的符号。
主要问题可能是,您没有编译多个目标文件并链接一次,而是将所有目标文件与标准库链接,最后将它们链接在一起。
相关文章:
- Usages of std::move
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 具有变量Number of Arguments的std::函数的矢量
- "multiple definition of"链接错误
- 编译mbed操作系统程序时"multiple definition of `main'"错误
- C++:" multiple definition of 'mainCRTStartup' "错误等
- "multiple definition of value"在 g++ 中编译具有未初始化全局但不是 gcc 的 C 程序时
- 调试"multiple definition of ..."错误的一般技术?
- 编写仅标头模板库时"Multiple definition of"错误
- GNU GCC 编译器错误"multiple definition of main"
- 简单 qtest 失败,'multiple definition of main'
- 使用 -Wall 而不是 -o 时出现"multiple definition of _start"错误
- 编译简单的Hello World时进行多次"multiple definition of ..."
- "Multiple Definition Of"错误。我做错了什么?
- "Multiple definition of.." "First defined here"数据结构中的同一行中
- 奇怪的"multiple definition of"错误类型
- 与 DLL 链接时"multiple definition of `atexit'"
- #ifnotdef:错误" multiple definition of 'member function' "
- gcc:在C++应用程序中链接 C 库会导致"multiple definition of"错误