微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > armlink 使用方法详解

armlink 使用方法详解

时间:11-11 来源:互联网 点击:

dsp开头的只含有唯一输入段的目标文件,可以使用如下的选项:-keepdsp*.o

19)-firstsection-id这个选项将被选择的输入段放在运行域的开始。通过该选项,将包含复位和中断向量地址的段放置在映像文件的开始,可以用下面的参数代替section-id:
1.symbol选择定义symbol的段。禁止指定在多处定义的symbol,因为多个段不能同时放在映像文件的开始。
2.object(section)从目标文件中选择段放在映像文件的开始位置。在目标文件和括号之间不允许存在空格,例如-firstinit.o(init)
3.object选择只有一个输入段的目标文件。如果这个目标文件包含多个输入段,armlink会产生错误信息。用这个选项的例子如下:-firstinit.o这里希望读者注意的是:使用-first不能改变在域中按照RO段放在开始,接着放置RW段,最后放置ZI段的基本属性排放顺序。如果一个域含有RO段,则RW或ZI段就不能放在映像文件的开头。类似地,如果一个域有RO或RW段,则ZI段就不能放在文件开头。两个不同的段不能放在同一个运行时域的开头,所以使用该选项的时候只允许将一个段放在映像文件的开头。

20)-lastsection-id这个选项将所选择的输入段放在运行域的最后。例如,用这个选项能够强制性的将包含校验和的输入段放置在RW段的最后。使用下面的参数可以替换section-id。
1.symbol选择定义symbol的段放置在运行域的最后。不能指定一个有多处定义的symbol。使用该参数的例子如下:-lastchecksum
2.object(section)从目标文件中选择section段。在目标文件和后面的括号间不能有空格,用该参数的例子为:-lastchecksum.o(check)
3.object选择只有一个输入段的目标,如果该目标文件中有多个输入段,armlink会给出出错信息。和-first选项一样,需要读者注意的是;使用-last选项不能改变在域中将RO段放在开始,接着放置RW段,最后放置ZI段的输出段基本的排放顺序。如果一个域含有ZI段,则RW段不能放在最后,如果一个域含有RW或ZI段,则RO段不能放在最后。在同一个运行域中,两个不同的段不能同时放在域的最后位置。

21)-libpathpathlist这个选项为ARM标准的C和C++库指定了搜索路径列表。注意,这个选项不会影响对用户库的搜索路径。这个选项覆盖了环境变量ARMLIB所指定的路径。参数pathlist是一个以逗号分开的多个路径列表,即为path1,path2,...pathn,这个路径列表只是用来搜索要用到的ARM库函数。默认的,对于包含ARM库函数的默认路径是由环境变量ARMLIB所指定的。

22)-scanlib这个选项启动对默认库(标准ARMC和C++库)的扫描以解析引用的符号。这个选项是默认的设置。

23)-noscanlib该选项禁止在链接时候扫描默认的库。

24)-locals这个选项指导链接器在生成一个可执行映像文件的时候,将本地符号添加到输出符号信息表中。该选项是默认设置。

25)-nolocals这个选项指导链接器在生成一个可执行映像文件的时候,不要将本地符号添加到输出符号信息表中。如果想减小输出符号表的大小,可以使用该选项。

26)-callgraph该选项创建一个HTML格式的静态函数调用图。这个调用图给出了映像文件中所有函数的定义和引用信息。对于每一个函数它列出了:
1.函数编译时候的处理器状态(ARM状态还是Thumb状态);
2.调用func函数的集合;
3.被func调用的函数的集合;
4.在映像文件中使用的func寻址的次数。
此外,调用图还标识了下面的函数:
1.被interworkingveneers所调用的函数;
2.在映像文件外部定义的函数;
3.允许未被定义的函数(以weak方式的引用);
静态调用图还提供了堆栈使用信息,它显示出了:
1.每个函数所使用的堆栈大小;
2.在全部的函数调用中,所用到的最大堆栈大小。

27)-infotopics这个选项打印出关于指定种类的信息,这里的参数topics是指用逗号间隔的类型标识符列表。类型标识符列表可以是下面所列出的任意一个:
1.sizes为在映像文件中的每一个输入对象和库成员列出了代码和数据(这里的数据包括,RO数据,RW数据,ZI数据和Debug数据)的大小;
2.totals为输入对象文件和库,列出代码和数据(这里的数据包括,RO数据,RW数据,ZI数据和Debug数据)总的大小;
3.veneers给出由armlink生成的veneers的详细信息;
4.unused列出由于使用-remove选项而从映像文件中被删除的所有未使用段。注意:在信息类型标识符列表之间不能存在空格,比如可以输入-infosizes,totals但是不能是-infosizes,totals(即在逗号和totals之间有空格是不允许的)

28)-map这个选项创建映像文件的信息图。映像文件信息图包括映像文件中的每个加载域,运行域和输入段的大小和地址,这里的输入段还包括调试信息和链接器产生的输入段。

29)-symbols这个选项列出了链接的时候使用的每一个局部和全局符号。该符号还包括链接生成的符号。

30)-symdefsfile这个选项创建一个包含来自输出映像文件的全局符号定义的符号定义文件。默认的,所有的全局符号都写入到符号定义文件中。如果文件file已经存在,链接器将限制生成在已存在的symdefs文件中已列出的符号。如果文件file没有指明路径信息,链接器将在输出映像文件的路径搜索文件。如果文件没有找到,就会在该目录下面创建文件。在链接另一个映像文件的时候,可以将符号定义文件作为链接的输入文件。

31)-editfile这个选项指定一个steering类型的文件,该文件包含用于修改输出文件中的符号信息表的命令。可以在steering文件中指定具有以下功能的命令:隐藏全局符号。使用该选项可以在目标文件中隐藏指定的全局符号。重命名全局符号。使用这个选项可以解决符号命名冲突的现象。

32)-xref该选项列出了在输入段间的所有交叉引用。

33)-xreffromobject(section)这个选项列出了从目标文件中的输入段对其他输入段的交叉引用。如果想知道某个指定的输入段中的引用情况,就可以使用该选项。

34)-xreftoobject(section)该选项列出了从其他输入段到目标文件输入段的引用。

35)-errorsfile使用该选项会将诊断信息从标准输出流重定向到文件file中。

36)-listfile该选项将-info,-map,-symbols,-xref,-xreffrom和–xrefto这几个选项的输出重新定向到文件file中。如果文件file没有指定路径信息,就会在输出路径创建该文件,该路径是输出映像文件所在的路径。

37)-verbose这个选项将有关链接操作的细节打印出来,包括所包括的目标文件和要用到的库。

38)-unmangled该选项指定链接器在由xref,-xreffrom,-xrefto,和-symbols所生成的诊断信息中显示出unmangledC++符号名。如果使用了这个选项,链接器将unmangleC++符号名以源码的形式显示出来。这个选项是默认的。

39)-mangled这个选项指定链接器显示由-xref,-xreffrom,-xrefto,和-symbols所产生的诊断信息中的mangledC++符号名。如果使用了该选项,链接器就不会unmangleC++符号名了。符号名是按照它们在目标符号表中显示的格式显示的。

40)-viafile该选项表示从文件file中读取输入文件名列表和链接器选项。在armlink命令行可以输入多个-via选项,当然,-via选项也能够不含在一个via文件中。

41)-strict这个选项告诉链接器报告可能导致错误而不是警告的条件。

42)-unresolvedsymbol这个选项将未被解析的符号指向全局符号symbol。Symbol必须是已定义的全局符号,否则,symbol会当作一个未解析的符号,链接将以失败告终。这个选项在自上而下的开发中尤为有用,在这种情况下,通过将无法指向相应函数的引用指向一个伪函数的方法,可以测试一个部分实现的系统。该选项不会显示任何警告信息。

43)input-file-list这是一个以空格作为间隔符的目标或库的列表。有一类特殊的目标文件,即symdef文件,也可以包含在文件列表中,为生成的映像文件提供全局的symbol值。在输入文件列表中有两种使用库的方法。
1.指定要从库中提取并作为目标文件添加到映像文件中的特定的成员。
2.指定某库文件,链接器根据需要从其中提取成员。
armlink按照以下的顺序处理输入文件列表:
1.无条件的添加目标文件
2.使用匹配模式从库中选择成员加载到映像文件中去。例如使用下面的命令:armlinkmain.omylib(stdio.o)mylib(a*.o).将会无条件的把mylib库中所有的以字母a开头的目标文件和stdio.o在链接的时候链接到生成的映像文件中去。
3.添加为解析尚未解析的引用的库到库文件列表。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top