ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
将 C/C++ 程序作为单独步骤进行链接的一般语法如下:
armcl --run_linker {--rom_model | --ram_model} filenames | |
[options] [--output_file=name.out] --library=library [lnk.cmd] |
armcl --run_linker | 调用链接器的命令。 |
--rom_model | --ram_model | 通知链接器使用 C/C++ 环境定义的特殊约定的选项。当使用 armcl --run_linker 而不列出要在命令行编译的任何C/C++ 文件时,必须 在命令行上或链接器命令文件中使用 --rom_model 或 --ram_model。--rom_model 选项在运行时进行自动变量初始化;--ram_model 选项在加载时进行变量初始化。有关使用 --rom_model 和 --ram_model 选项的详细信息,请参阅节 4.3.5。如果未能指定 ROM 或 RAM 模型,您将看到一条链接器警告,内容为:
|
filenames | 目标文件、链接器命令文件或存档库的名称。输入文件的默认扩展名为 .c.obj(用于C 源文件)和 .cpp.obj(用于C++ 源文件)。必须显式指定任何其他 扩展名。链接器可以确定输入文件是包含链接器命令的目标文件还是 ASCII 文件。除非使用 --output_file 选项,否则默认输出文件名为 a.out。 |
options | 影响链接器处理目标文件的方式的选项。链接器选项只能出现在命令行上的 --run_linker 选项之后,否则可以按任意顺序出现。(《ARM 汇编语言工具用户指南》中详细讨论了这些选项。) |
--output_file= name.out | 对输出文件命名。 |
--library= library | 标识包含 C/C++ 运行时支持和浮点数学函数或链接器命令文件的合适的存档库。如果正在链接 C/C++ 代码,必须使用运行时支持库。可以使用编译器中包含的库,也可以创建您自己的运行时支持库。如果在链接器命令文件中指定了运行时支持库,则不需要此参数。--library 选项的缩写形式为 -l。 |
lnk.cmd | 包含链接器的选项、文件名、指令或命令。 |
编译器创建的目标文件的默认文件扩展名已更改。从 C 源文件生成的目标文件具有 .c.obj 扩展名。从 C++ 源文件生成的目标文件具有 .cpp.obj 扩展名。
当将库指定为链接器输入时,链接器仅包含和链接那些解析未定义引用的库成员。链接器使用默认分配算法将程序分配到内存中。可以使用链接器命令文件中的 MEMORY 和 SECTIONS 指令来自定义分配过程。有关信息,请参阅《ARM 汇编语言工具用户指南》。
可以使用以下命令将包含目标文件 prog1.c.obj、prog2.c.obj 和 prog3.cpp.obj 的 C/C++ 程序与名为prog.out 的可执行目标文件进行链接:
armcl --run_linker --rom_model prog1 prog2 prog3 --output_file=prog.out
--library=rtsv4_A_be_eabi.lib