gcc各个组件的功能请教~~
时间:2009-05-14
来源:互联网
gcc各个组件的功能请教~~
只使用c/c++两种语言,涉及的组件有:
上面摘自LFS 6.4手册,参考论坛的http://www.linuxsir.org/bbs/showthread.php?t=152770帖子,大概知道了一些组件的作用:
只使用c/c++两种语言,涉及的组件有:
引用:
6.14.2. Contents of GCC Installed programs: c++, cc (link to gcc), cpp, g++, gcc, gccbug, and gcov Installed libraries: libgcc.a, libgcc_eh.a, libgcc_s.so, libmudflap.{a,so}, libssp.{a,so}, libstdc++.{a,so}, and libsupc++.a Short Descriptions c++ The C++ compiler cc The C compiler cpp The C preprocessor; it is used by the compiler to expand the #include, #define, and similar statements in the source files g++ The C++ compiler gcc The C compiler gccbug A shell script used to help create useful bug reports gcov A coverage testing tool; it is used to analyze programs to determine where optimizations will have the most effect libgcc Contains run-time support for gcc libmudflap Contains routines that support GCC's bounds checking functionality libssp Contains routines supporting GCC's stack-smashing protection functionality libstdc++ The standard C++ library libsupc++ Provides supporting routines for the C++ programming language |
引用:
c++ gcc的一个版本,默认语言设置为c++,而且在连续的时候自动包含标准c++库。这和g++一样 ccl 实际的c编译程序 cclplus 实际的c++编译程序 collect2 在不使用GNU链接程序的系统上,有必要运行collect2来产生特定的全局初始化代码(例如c++的构造函数和析构函数) g++ gcc的一个版本,默认语言设置为c++,而且在链接的时候自动包含标准c++库,这和c++一样 gcc 该驱动程序等同于执行编译程序和链接程序以产生必要的输出 libgcc 该库包含的例程被作为编译程序的一部分,是因为它们可被链接到实际的可执行程序中。它们是特殊的例程,链接到可执行程序,来执行基本的任务,例如浮点运算。这些库中的例程通常都是平台相关的。 libstdc++ 运行时库,包括定义为标准语言一部分的所有的c++类和函数 |
作者: lofeng 发布时间: 2009-05-14
从上面可以知道cc跟gcc一般都是一样的,因为cc是gcc的一个link
而cpp是预处理程序
但是c++跟g++有什么分别呢?
cc1才是实际的C编译程序
cc1plus是实际的C++编译程序
也就是说不管是gcc,还是g++/c++,都不能完成具体的编译工作,而是来调用其他工具来完成的编译的。
这样的话,使用gcc来编译程序时,gcc调用了哪些程序呢?调用的过程又是怎样的呢?是否是这样的:预处理程序cpp、编译程序cc1、连接器ld?
类似,使用g++/c++来编译程序时,g++/c++调用的程序和过程是否是这样的:预处理程序cpp、编译程序cc1plus、连接器ld?
而cpp是预处理程序
但是c++跟g++有什么分别呢?
cc1才是实际的C编译程序
cc1plus是实际的C++编译程序
也就是说不管是gcc,还是g++/c++,都不能完成具体的编译工作,而是来调用其他工具来完成的编译的。
这样的话,使用gcc来编译程序时,gcc调用了哪些程序呢?调用的过程又是怎样的呢?是否是这样的:预处理程序cpp、编译程序cc1、连接器ld?
类似,使用g++/c++来编译程序时,g++/c++调用的程序和过程是否是这样的:预处理程序cpp、编译程序cc1plus、连接器ld?
作者: lofeng 发布时间: 2009-05-14
在编译安装gcc时,提示的安装内容没有包括libexec目录下的相关程序,这是为何呢?
在libexec目录下有cc1、cc1plus、collect2,这是三个程序都是很重要的,为什么在LFS手册中没有提到呢?
cc1、cc1plus的作用很好理解
但是collect2到底起什么作用呢?
这个好像不是很正确。
常见有如下两个错误:
这样看起来是通过collect2来调用ld的,不知是否是这样?
在libexec目录下有cc1、cc1plus、collect2,这是三个程序都是很重要的,为什么在LFS手册中没有提到呢?
cc1、cc1plus的作用很好理解
但是collect2到底起什么作用呢?
引用:
collect2 在不使用GNU链接程序的系统上,有必要运行collect2来产生特定的全局初始化代码(例如c++的构造函数和析构函数) |
常见有如下两个错误:
引用:
collect2:ld returned 1 exit status collect2: cannot find `ld' |
作者: lofeng 发布时间: 2009-05-14
通过gcc -v test.c看到了编译过程中调用的那些程序
不过gcc -time test.c没有任何的显示结果 不知是为何
不过gcc -time test.c没有任何的显示结果 不知是为何
作者: lofeng 发布时间: 2009-05-16
偶在
http://www.linuxsir.org/bbs/post1987960-10.html
已经给出您答案了。
http://www.linuxsir.org/bbs/post1987960-10.html
已经给出您答案了。
引用:
作为习惯的一部分,请注意 libexec 对应目录下的程序 一般 不是给用户直接使用的,而是由其他程序调用简洁执行,比如您提到的 cc1 等 是由 gcc 调用执行。 |
作者: 聚焦深空 发布时间: 2009-05-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28