基于linux程序中段的学习总结详解_Linux

linux程序的段陆陆续续接触过一些,今天适当的总结一下,时间仓促,总结的比较零散。
linux 段:
text:已编译程序的机器代码。
.rodata:只读数据。printf中的格式串,或者开关语句的跳转表。
data:已初始化的全局变量。
bss:未初始化的全局变量。
symtab:符号表。
注意:
1、如果定义一个全局变量,int i = 0;它被初始化为0,但是,它却不是放在data段中的,而是放在bss段中的。因为编译器可能会做一些优化,如果初始化为0,则它会将它等同于未初始化的变量。这样的可能要求他会将所有未初始化的全局变量(bss段)初始化为0。——但是这个可能会和编译器有关系。
2、对于static全局变量,它在符号表中有一个属性表示他是local的,不是global。local的符号式不允许被其他的文件引用的。
3、static定义的局部变量,编译器会把它作为static全局变量来处理。它在符号表中是出现的(局部变量是不出现的)。唯一不同的是,它会把它在符号表中的名字改掉,一般会增加一个后缀:“.1788”。用这种方法来防止和其他的全局变量重名。而且也可以防止对它的调用。
4、段是有对齐的。如果定义一个char字符,会发现它有时会增加四个字节,之后定义,段大小便不再增加。
5、查看程序段的工具包括:readelf,objdump(加上-t可以查看变量属于哪个段),size(可以查看各个段的大小。)

时间: 2024-09-20 20:40:00

基于linux程序中段的学习总结详解_Linux的相关文章

基于Linux网关服务器squid配置过程详解_Linux

前言 在此,我们要配置一个只对内部网络提供代理服务的 Proxy Server.它具有如下功能它将用户分为高级用户和普通用户两种,对高级用户采用网卡物理地址识别的方法, 普通用户则需要输入用户名和口令才能正常使用. 高级用户没有 访问时间和文件类型的限制,而普通用户只在上班时可以访问以及一些其它的限制. 安装 从源中安装 源中自带稳定版本,执行下面的命令进行安装 sudo apt-get install squid squid-common 源码编译安装 当然你也可以到官方网站下载最新的版本进行

Linux文件权限与目录管理详解_Linux

一.Linux文件系统的三种身份 1).文件所有者 2).同组用户 同一个用户组的用户可以访问该用户组的文件: 每个账号可以加入多个用户组. 在同一个用户组的文件也可以设置不同的权限,可以不让本组用户查看.3).其他人 除了文件主.同组用户以外的人就是其他人. PS: /etc/passwd 记录所有用户的账号 /etc/shadow 记录所有用户的密码 /etc/group 记录所有的组名 二.文件属性 ls -al 显示所有的文件名和相关属性(包括以.开头的隐藏文件) total 72 dr

Linux查看命令之od命令详解_Linux

od(octal dump)命令 od(octal dump)命令可以以八进制.十进制.十六进制和ASCII码的格式来显示文件或者流,它们对于访问或可视地检查文件中不能直接显示在终端上的字符(如换行符等)很有用.此外,在一些有空洞的文件中可以通过od命令查看空洞的位置. 一般使用格式: od [-aBbcDdeFfHhIiLlOosvXx] [-A base] [-j skip] [-N length] [-t type] [[+]offset[.][Bb]] [file ...] 来个简化版:

linux中 关于screen 的命令详解_Linux

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GNU

linux下配置yum源方法详解_Linux

本人使用的方法一,成功配置,方法二没测过,可以作为参考 方法一: 1.确保RHEL5中已经安装了yum [root@lvs-master ~]# rpm -qa |grep yum yum-metadata-parser-2-el5 yum-updatesd-9-el5 yum-22-el5 yum-security-16-el5 yum-rhn-plugin-4-el5 2.修改源配置文件 #vim /etc/yum.repos.d/CentOS-Base.repo (如果目录下没有.repo

一天一个shell命令 linux好管家-磁盘-du命令详解_linux shell

du命令 磁盘管理 du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 语法 du [选项][文件] 选项 -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文件大小时,以byte为单位. -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes 以KB(1024bytes)为单位输出. -m或--megabytes 以MB为单位

一天一个shell命令 linux文件操作系列-ln命令详解_linux shell

里提示一下:ubuntu的翻译很多都是字面直译,存在很多问题,所以建议大家参照我这里的解释.当然本来也是有些赶文的嫌疑,望指正. 经常在linux上操作,有在不同的目录下切换某几个固定的命令,或者修改几个固定的文件,这时候,如果能在一个目录下就操作他们,会是一件多么轻松的事情.我们来看看链接命令ln 全称 ln 全称是link 顾名思义,这是一个建立一个链接.怎么去理解呢?它的功能类似于Mac OS的别名或者Windows的快捷方式, 删除不会影响文件本身. 说明:(直接看看斜体,就行了) 链接

基于C语言中段错误的问题详解_C 语言

当我在linux下写c语言的时候经常会遇到段错误.所以就来细究一下. 段错误或段违规(segmentation violation)查看Expert C Programming(Peter Van Der Linden) Pg.156解释到段错误是由于内存管理单元(MMU)的异常所致,而该异常则通常是由于解除引用一个未初始化或非法的指针引起. 就是指针正在引用一个并不位于你的地址空间中的地址.书中的例子 复制代码 代码如下: int *p = 0;  *p = 17;  这里显然 地址0 并不是

基于linux下获取时间函数的详解_C 语言

//-------------------------------------------------------------//asctime(将时间和日期以字符串格式表示)#include<time.h>定义函数char * asctime(const struct tm * timeptr);函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:"We