惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
L
LangChain Blog
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
IT之家
IT之家
A
About on SuperTechFans
H
Help Net Security

博客园 - Xuemin_Zhang

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. 国外7个源代码/库搜索引擎网站 【转】屏蔽优酷、土豆等视频网站15秒广告的最全最简单方法 QT编译之错--”Basic XLib functionality test failed!” [转]国内地图服务可用性比较 Ubuntu下安装jdk Linux下解压缩命令汇总 SlickEdit 2010破解 C++ std::pair 与 std::make_pair NetBeans IDE 配置qmake在qvfb下开发 - Xuemin_Zhang Navit学习笔记(六)-- Navit的attr模型 Navit学习笔记(五) Navit学习笔记(四) C语言宏定义中#与##的用法 - Xuemin_Zhang - 博客园 Navit学习笔记(三) Navit学习笔记(二) Navit学习笔记(一) 论文答辩PPT制作攻略 Qt乱码问题 - Xuemin_Zhang - 博客园
[转]gcc交叉编译错误之一: multiple definition of - Xuemin...
Xuemin_Zhang · 2010-08-28 · via 博客园 - Xuemin_Zhang

1、问题:在common.h中放着“全局变量”:包括函数和变量,在其他*.cpp文件中包含#include "common.h",交叉编译时,出现multiple definition问题;        

2、原因:由于工程中的每个文件都是独立的解释的,即使头文件有:
#ifndef _x_h
....
#enfif
在其他文件中只要包含了common.h 就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于文件中有重名变量,于是就出现了重复定义的错误。

3、解决方案:在common.c(或.cpp) 中声明变量,然后建一个头文件common.h 在所有的变量声明前加上extern关键字,如 extern int testNum(int eventNumber);注意这儿不要有变量的初始化语句。然后在其他需要使用全局变量的 c文件中包含common.h 文件而不要包含 common.cpp 文件。编译器会为common.cpp生成目标文件,然后连接时,在使用全局变量的文件中就会连接到此文件。