跳至主要内容

博文

目前显示的是 四月 12, 2009的博文

【转贴】GNU LD用法

1、什么是ld?它有什么作用?       ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation、symbol management、libraries、relocation。       ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控制链接的过程。通过BFD(Binary Format Description)库,ld可以读取和操作COFF(common object file format)、ELF(executable and linking format)、a.out等各种格式的目标文件。   2、常用的选项   -b TARGET  设置目标文件的文件格式 -e ADDRESS 设置目标文件的开始地址 -EB  链接big-endian的目标文件 -EL  链接small-endian的目标文件 -l LIBNAME    创建执行程序时要链接的库文件(比如某个库为test,则可以为-ltest) -L DIRECTORY  寻找要链接的库文件时搜索的文件路径 -o FILE  设置输出文件的名字 -s  去除输出文件中的所有符号信息 -S  去除输出文件中的调试符号信息 -T FILE  读取链接描述脚本,以确定符号等的定位地址 -v  输出ld的版本信息 -x  去除所有的局部符号信息 -X  去除临时的局部符号信息,默认情况下会设置这个选项 -Bstatic   创建的输出文件链接静态链接库 -Bdynamic  创建的输出文件链接动态链接库 -Tbss ADDRESS  设置section bss的起始地址 -Tdata ADDRESS 设置section data的起始地址 -Ttext ADDRESS 设置section text的起始地址   3、链接描述脚本       链接描述脚本描述了各个输入文件的各个section如何映射到输出文件的各section中,并控制输出文件中section和符号的内存布局

【转帖】软件人才划分

一、门外汉型 :几乎没有学习能力,更没有创新能力。比如,买了一本《一步一步跟我学VB编程》之类的书,对照书上写的,把例子程序给做出来了,还把例子程序的某些窗口标题给修改了一下。然后,就自认为自己可以做软件开发工作了。到处递简历,应聘的职位为软件开发工程师。这类人,以刚毕业的计算机专业的大学生为多(当然,刚毕业的学生中也有非常高级的人才)。读书期间,就以玩游戏为主,考试的时候,就搞点舞弊过关。    二、入门型 :该类型的人员(不叫人才,所以叫人员),可能入门某一种到两种开发语言,10年前,我上大学的时候,这类人的典型特点是热衷于DOS命令的n种用法。比如,dir命令的各种参数。学习过basic语言,知道C语言中printf函数的各种参数的用法,到了2005年,这类人是热衷于windows下的注册表,热种于在自己的机器上安装各种开发工具(VB,VC,dephi,asp等)。但是,仅仅停留在编译开发工具中自带的几个例子程序中。(可能还会做点修改)。经过一段时间的学习,可能还自己能够编写个简单的windows应用程序,修改注册表的程序等等。其很多时间还是在玩游戏,上QQ聊天泡MM,看了一篇如何修改某病毒的文章,一定会对照文章上的说明,把病毒给修改了,然后到处发,以显示自己的能力。当然,很多时候,该类人即使对照文章的说明,也不能将病毒修改。那就找那些带配置工具的黑客程序去弄吧,比如。BO等就是他们最常用来炫耀的。中国的破解者与初级黑客,绝大部分是这一类人。懂的不多,还喜欢炫耀(为炫耀目的的破解和修改病毒就是这一类人的最大特点)。该类人员,一般都没有在软件公司从事软件开发工作。    三、基本型人才 :该类型一般是大学毕业,并且从事软件开发工作超过2年的人为多,至少比较熟悉一门语言(以VB,dephi,java,asp等其中的一种)。也有少数人熟悉C或者C++,但是如果是C或者C++,一般对指针等概念还是似懂非懂的状态。哦,对了,该类人员可能还会在自己的机器上安装过linux或者sco unix等。但由于对自己没有信心,大部分人会在半个月之后把linux删除。该类型人才,有一定学习能力。创新能力为零。适合培养成为软件蓝领,如果人际交往能力还可以的话,可以培养成为一个初级营销人员。该类型的人典型的特点是:你要他做个项目,他首先就会问:用什么语言?(因为用他不熟悉的语言对他来