linux gcc编译模式,在Linux中GCC详细模式输出说明
我是
Linux的新手.任何人可以向我解释我的hello world程序的以下详细模式输出?此外,文件crt1.o,crti.o,crtend.o,crtbegin.o和crtn.o和lc和lgcc会做什么?任何其他解释性的联系也是欢迎的.
$gcc -v hello.c
Reading specs from /usr/lib/gcc-lib/i686/3.3.1/specs
Configured with: ../configure --prefix=/usr
Thread model: posix
gcc version 3.3.1
/usr/lib/gcc-lib/i686/3.3.1/cc1 -quiet -v -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1
hello.c -quiet -dumpbase hello.c -auxbase hello -Wall
-version -o /tmp/cceCee26.s
GNU C version 3.3.1 (i686-pc-Linux-gnu)
compiled by GNU C version 3.3.1 (i686-pc-Linux-gnu)
GGC heuristics: --param ggc-min-expand=51
--param ggc-min-heapsize=40036
ignoring nonexistent directory "/usr/i686/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/include
/usr/lib/gcc-lib/i686/3.3.1/include
/usr/include
End of search list.
as -V -Qy -o /tmp/ccQynbTm.o /tmp/cceCee26.s
GNU assembler version 2.12.90.0.1 (i386-Linux)
using BFD version 2.12.90.0.1 20020307 Debian/GNU
Linux
/usr/lib/gcc-lib/i686/3.3.1/collect2
--eh-frame-hdr -m elf_i386 -dynamic-linker
/lib/ld-Linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc-lib/i686/3.3.1/crtbegin.o
-L/usr/lib/gcc-lib/i686/3.3.1
-L/usr/lib/gcc-lib/i686/3.3.1/../../.. /tmp/ccQynbTm.o
-lgcc -lgcc_eh -lc -lgcc -lgcc_eh
/usr/lib/gcc-lib/i686/3.3.1/crtend.o
/usr/lib/crtn.o
第一部分是编译器驱动程序的版本和配置数据(这是gcc二进制文件,实际上并不是编译器本身):
Reading specs from /usr/lib/gcc-lib/i686/3.3.1/specs
Configured with: ../configure --prefix=/usr
Thread model: posix
gcc version 3.3.1
然后它打印它用来调用真正的编译器的命令cc1:
/usr/lib/gcc-lib/i686/3.3.1/cc1 -quiet -v -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1
hello.c -quiet -dumpbase hello.c -auxbase hello -Wall
-version -o /tmp/cceCee26.s
而cc1打印它的版本和配置信息.
GNU C version 3.3.1 (i686-pc-Linux-gnu)
compiled by GNU C version 3.3.1 (i686-pc-Linux-gnu)
GGC heuristics: --param ggc-min-expand=51
--param ggc-min-heapsize=40036
那么cc1会告诉你将搜索包含文件的目录.
ignoring nonexistent directory "/usr/i686/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/include
/usr/lib/gcc-lib/i686/3.3.1/include
/usr/include
End of search list.
编译器现在完成了,所以gcc告诉你将使用的汇编器命令.
as -V -Qy -o /tmp/ccQynbTm.o /tmp/cceCee26.s
而汇编程序就给出了它的版本信息.
GNU assembler version 2.12.90.0.1 (i386-Linux)
using BFD version 2.12.90.0.1 20020307 Debian/GNU
Linux
汇编器现在完成,所以gcc给出了链接器命令.它使用collect2作为真正的链接器ld的中介,但这并不重要.
/usr/lib/gcc-lib/i686/3.3.1/collect2
--eh-frame-hdr -m elf_i386 -dynamic-linker
/lib/ld-Linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc-lib/i686/3.3.1/crtbegin.o
-L/usr/lib/gcc-lib/i686/3.3.1
-L/usr/lib/gcc-lib/i686/3.3.1/../../.. /tmp/ccQynbTm.o
-lgcc -lgcc_eh -lc -lgcc -lgcc_eh
/usr/lib/gcc-lib/i686/3.3.1/crtend.o
/usr/lib/crtn.o
链接器不提供详细的输出(尝试-Wl,-v),就是这样.
“crt”文件是指“C RunTime”.它们是在程序开始时插入的小部分代码,最后一节.他们负责初始化全局变量,堆和堆栈.从main返回后,它们调用atexit函数.另外还有一些.
希望有帮助.
linux gcc编译模式,在Linux中GCC详细模式输出说明相关推荐
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- 用gcc编译实现对Linux系统cpu占用
目标:使用gcc编译代码使得占用系统的cpu. 1.确定是否安装gcc编译 2.vi att.c 文件代码如下: a的数值可自己调控,for循环(;;)代表死循环,在for中运行竟可能复杂的代码,让机 ...
- 【GCC】gcc警告选项汇总--编辑中|gcc编译选项
目录 前言 请求或取消警告选项 GCC编译选项 参考原文:https://blog.csdn.net/qq_17308321/article/details/79979514 前言 警告:不是错误的, ...
- linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...
- linux 线程编译指令i,linux线程篇之(一):线程的创建与应用
#include#include void thread1(void)//线程1 { int i=0; for(i=0;i<6;i++) { printf("this is a pth ...
- linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
要想利用HLS来实现视频的在线播放,就得需要将一个完整的视频文件切割成多个ts视频流,然后利用m3u8的索引文件来播放. 在Mac下,苹果提供了streamingTools的工具,里面有mediafi ...
- linux 上编译arm64,Arch Linux 搭建 arm64/AArch64 交叉编译环境
Arch Linux 搭建 arm64/AArch64 交叉编译环境 0. 系统环境 系统: Arch Linux: 成文时间最新 工具版本:Binutils:2.34-1 GCC:9.2.1+202 ...
- linux 模块化编译,手把手教Linux驱动1-模块化编程 module
大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点.本专题会一直更新,有任何疑问,可以留言或者加我微信. Linux的开发者,遍布世界各地,他们相互之 ...
- linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题
记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...
- linux make编译卡死,为linux内核编译make文件时出现问题?
我刚刚开始使用Linux内核开发,并且遇到了编译make文件的问题.为linux内核编译make文件时出现问题? 这是hello世界的教程. 我的HELLO-1.C文件 * * hello−1.c − ...
最新文章
- Hibernate一对多单向关联和双向关联映射方法及其优缺点
- 中国计算机学会CCF推荐国际学术会议和期刊目录-软件工程/系统软件/程序设计语言
- [今日干货]短视频获得种子用户的途径
- 2.3.4 mysql 用户密码管理
- 如何处理错误消息Please install the Linux kernel header files
- 【第四周作业】参加项目开发之后的一些体会
- OpenJPA:内存泄漏案例研究
- 流媒体测试笔记记录之————阿里云监控、OBS、FFmpeg拉流和推流变化比较记录...
- python123第四章第五题_Python123
- Java实现求阶乘和的三种方法
- C语言找n以上最小质数,[原创]求质数(C语言描述)
- 双稳态电路的两个稳定状态是什么_干货|常见的脉冲电路到底有何用途和特点?终于了解了!...
- 笔记本扩展显示器,微信界面显示字体模糊如何解决?
- WIN API编程的详细介绍
- JAVA商城 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 直播商城 短视频商城 springcloud商城 spring cloud商城
- 小米Note4、小米8、一加6刷机(三方rec+rom+root)
- C++入门——神奇的引用
- Spine动画导入报错 : Could not automatically set the AtlasAsset for “xx“.you may set it manually
- Hadoop起源简介
- win10开机桌面壁纸位置