g++ 链接问题
#ifndef _MAP_TEST_H
#define _MAP_TEST_H
#include <map>
#include <string>
using std::map;
using std::string;
map<string, string> map_config;
void init_map_config();
#endif
以上是map_test.h
#include "map_test.h"
void init_map_config()
{
map_config.insert({"123", "123"});
map_config.insert({"456", "456"});
map_config.insert({"789", "789"});
}
以上是map_test.cpp
#include <iostream>
#include "map_test.h"
using std::cout;
using std::endl;
int main()
{
init_map_config();
for (auto it = map_config.begin(); it != map_config.end(); it++)
cout << it->first << " " << it->second << endl;
cout << endl;
}
以上是main.cpp
编译
g++ -c map_test.cpp -o map.o -std=c++11
g++ -c main.cpp -o main.o -std=c++11
链接
g++ map.o main.o -o main
链接时出错:
main.o:(.bss+0x0): `map_config'被多次定义
map.o:(.bss+0x0):第一次在此定义
collect2: error: ld returned 1 exit status
这是为什么呢?
...全文
相关推荐
gcc、g++离线安装包
在实际开发中,你可能会遇到链接错误、语法错误等各种问题,这时,GCC和G++的错误信息会帮助你定位问题所在。学习如何理解和解决这些错误是每个开发者必须掌握的技能。
linux下使用g++编译cpp工程的方法
**g++与gcc的区别**: 虽然g++和gcc都可以编译C++代码,但g++默认链接C++标准库,而gcc则链接C标准库。在实际使用中,通常推荐使用g++来编译C++程序,以避免手动指定C++库。
g++ for linux 安装
如果需要链接额外的库或指定其他编译选项,可以添加相应的参数。在开发过程中,你可能还会遇到如调试、优化、多文件项目编译等问题,g++提供了丰富的编译选项来满足这些需求。
gcc g++完整依赖rpm包
在安装GCC和G++时,通常会遇到许多依赖问题,因为它们需要一系列库和其他工具来完成编译任务。这个压缩包就是为了解决这个问题,确保用户能够在RPM系统上顺利安装和使用这两个编译器。
gcc和g++到底啥关系
`GCC`主要用于编译C语言程序,而`G++`则是专门为C++设计的,不仅支持C++的所有特性,还能自动处理C++标准库的链接问题。


