日度归档:2015年4月20日

编译器的链接程序–{程序的生成原理}

摘自 深入理解计算机系统
一个包含两个源文件的程序 main.c swap.c ,在函数main中调用swap函数,使外部全局数组buf中的两个元素进行交换。
在对这两个文件进行编译的时候,编译系统提供编译驱动程序,编译驱动程序主要根据需求调用语言预处理器 编译器 汇编器 链接器生成程序。
[root@localhost ~]#gcc -o2 -g -o m main.c swap.c
链接器
通过上图,我们可以看出
1 通过cpp预处理器 将 main.c 转换为main.i swap.c 转换为 swap.i
2 通过cc1编译起 将 main.i 转换为汇编语言文件 main.s swap.i —> swap.s
3 通过as汇编器 将main.s转换为 main.o 目标文件 swap.s —->swap.o
4 通过链接器程序ld 将main.o swap.o 及一些引用的系统目标文件进行组合,生成可运行程序m
[root@localhost ~]#./m 运行程序,可以得到想要的结果

Linux 中链接器ld

linux 下log文件夹简介

以下介绍的是20个位于/var/log/ 目录之下的日志文件。其中一些只有特定版本采用,如dpkg.log只能在基于Debian的系统中看到。
/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log — 记录所有等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及所有打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。
除了手动存档和清除这些日志文件以外,还可以使用logrotate在文件达到一定大小后自动删除。可以尝试用vi,tail,grep和less等命令查看这些日志文件

less命令简介

linux下命令之less

在Linux中有一个非常重要的并且常用的命令less,less命令同More命令的功能十分相似,通过这两个命令都可以访问文件中的内容。
less和more之间区别:
less命令可以通过参数向前和向后浏览文件,如果需要翻看文件可以采用pageUp pageDown向上向下翻看文件;
more命令只能想后浏览文件。
实践证明,如果采用putty,通过ssh的方式连接到服务器上,more命令也可以通过pageUp 向上查看文件已显示出的文件。
less语法:
less 参数 文件名
参数说明:
-e 文件显示完毕后,自动退出less
-f 强制显示文件
-g 不加亮显示搜索到的文字
-l 不区分大小写,主要针对搜索
-N 每一行行首显示行号
-s 将连续多个空航压缩成一行显示
-S 单行显示较长内容,而不换行显示
-x<数字>将tab显示为指定数的空格字符
/字符串 向下搜索字符串
?字符串 向上搜索字符串
n 重复前一个搜索 和搜索功能联合使用
b 向后翻一页
d 向后翻半页
u 向前滚半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
h 显示帮助界面
q 退出less命令

例一 less查看文件:
[root@localhost ~]#less -N t.c //单一命令显示行号
[root2localhost ~]#less -eN t.c //组合命令显示行号兵 自动退出less

例二 less用于对象中的显示
[root@localhost ~]#ls |less -N //将查询出的ls 文件列表采用less组合查看
[root@localhost ~]#history |less -N //逐页显示 history命令