Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24717
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-13 14:47
文章分类

全部博文(11)

文章存档

2015年(5)

2014年(6)

我的朋友

分类: 嵌入式

2015-03-31 16:46:39

GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C++ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C++ 源文件的后缀名为 .C .cpp

     但是,gcc 命令只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库连接(可以使用-lstdc++来加载c++库)。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。

     所以有时使用gcc 编译.c程序,而在.c程序中调用了用户c++静态库时会出错,而将后缀名改成.C就没问题了.

undefined reference to '__gxx_personality_v0'
编译 c++ 程序需要添加 -lstdc++ option. sample: gcc -lstdc++ -o test test.c,否 "undefined reference to'__gxx_personality_v0' " 错误 或者用g++也可以

Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。

.c为后缀的文件,C语言源代码文件;
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.ii为后缀的文件,是已经预处理过的C++源代码文件;
.m为后缀的文件,是Objective-C源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件。

阅读(1198) | 评论(0) | 转发(0) |
0

上一篇:ELF文件和BIN文件

下一篇:jtag

给主人留下些什么吧!~~