Archive for the ‘Linux下C编程’ category

GPROF 使用

November 29th, 2013

项目地址:http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

gprof是一个 可以通过运行程序,确定程序函数的执行时间。

这个程序依赖gcc -g -pg ,通过这个可以获取丰富的调试信息,供我们以后代码优化使用。
» Read more: GPROF 使用

编写Share Object Library

November 22nd, 2013

最近要编写供自己使用的library,library是以.so结尾的文件。类似于windows下面的dll文件。
在编写so文件之前,我们要先熟悉ldd命令与ldconfig命令
在上一篇博客中我写道ld主要是为了从library中寻找特定的库函数并加载到ld.so.cache与GOT表中,ldconfig在/sbin/下。
ldconfig为在命令行中说明的目录或文件/etc/ld.so.config中指定的目录或一些可信任的目录 (象/usr/lib, /lib)中的最新的动态连接库创建必要的连接和绶存。这些绶存起来的数据会被动态连接器ld.so 或 ld-linux.so所使用。ldconfig会检查它所遇到的动态库文件的名称与版本号,以决定那些动态库的连接要进行更新。
» Read more: 编写Share Object Library

GCOV的使用

November 20th, 2013

gcov是什么?

  • Gcov is GCC Coverage
  • 是一个测试代码覆盖率的工具
  • 是一个命令行方式的控制台程序
  • 伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试;
  • 与程序概要分析工具(profiling tool,例如gprof)一起工作,可以估计程序中哪一段代码最耗时;

注:程序概要分析工具是分析代码性能的工具。 

» Read more: GCOV的使用

使用GDB中修改特定寄存器值及其原理

November 20th, 2013

最近重新学习了一下gdb的使用,以前我只是熟悉特定的命令。现在配合听课和ppt。对于functions载入内存的过程有了一定的了解,结合我前面写的assemble笔记中那个linux中程序的栈帧分配图,会达到一个很好的效果。http://lizhaozhong.sinaapp.com/?p=458

» Read more: 使用GDB中修改特定寄存器值及其原理

裁剪编译Linux Kernel

November 13th, 2013

参考http://www.wikihow.com/Compile-the-Linux-Kernel

最近由于项目需要,需要编译裁剪符合需求的kernel。大家都知道distribution的版本大都比较庞大,里面很多东西其实对于自己的机器根本用不到,在嵌入式系统中由于flash与rom的大小有限。显得裁剪kernel更加有必要。

自己编译内核能在选项里去除这些多余的选项, 只挑选当前机器适用的硬件驱动, 往往能得到1个更精简的内核,理论上是比1个臃肿的内核更加稳定和快速的。 第二,对于任何软件来讲。理论上用当前机器自己编译出来的会比用其他环境机器编译出来的性能要高一点点。 » Read more: 裁剪编译Linux Kernel