gcc交叉编译错误: multiple definition of条件:1、nasemail.h中放着“全局变量”:包括函数和变量; 2、在其他*.c文件中包含#include"nasemail.h",交叉编译时,出现这个问题; 原因: 由于工程中的每个文件都是独立的解释的, (即使头文件有 #ifndef _x_h .... #enfif ) 在其他文件中只要包含了nasemail.h 就会独立的解释,然后每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。 解决方案: 在naemail.c(或.cpp) 中声明变量,然后建一个头文件nasemail.h 在所有的变量声明前加上extern ... 如 extern int notificationEmail(int eventNumber); 注意这儿不要有变量的初始化语句。 然后在其他需要使用全局变量的 c文件中包含nasemail.h 文件而不要包含 nasemail.c 文件。编译器会为nasemail.c生成目标文件,然后连接时,在使用全局变量的文件中就会连接到此文件 。 |
gcc交叉编译错误:multiple definition of
精选 转载上一篇:在kernel2.4.18下的s3c2410 AD驱动
下一篇:堆和栈的基础知识

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Go程序的交叉编译
Go程序的交叉编译是每一位GO程序猿必须掌握的知识点。但是我没有。在昨天,我编译了一个项目,生成了二进制,放到目标机器上,执行报错,错误如下:bash: ./api.linux: cannot execute binary file: Exec format error提示很明显,可执行文件格式错误,不能执行二进制文件。直接定位到了,是目标机器的内核跟我的Macbook Pro不匹配;接着在目标系
cannot execute binar Exec format error GOARCH GO交叉编译 aarch64 -
gcc/交叉编译
gcc/交叉编译
linux基础知识 c++ linux 编译器 -
gcc: multiple definition of [转]
/home/tace/ope
头文件 解决方法 编译器 成员变量 #include -
GCC编译错误小结
gcc未定义的引用,
so库 c语言 头文件 共享库 gcc编译