Hightec生成tricore lib及lib的使用方法
文章目录
- 前言
- 使用tricore-ar生成lib
- option
- modifier
- 生成lib示例
- 解压lib示例
- lib的使用
- 总结
前言
之前介绍过GHS生成lib及使用lib的方法,链接:使用Greenhills生成Lib并使用Lib的两种方法
本文基于TC3xx介绍Hightec生成lib及使用lib的方法,其他芯片也可以参考
使用tricore-ar生成lib
查阅Hightec Tricore编译器使用手册,知道了使用tricore-ar.exe来生成lib,生成lib的过程本质就是将c文件编译之后的.o文件进行打包,打包好的lib文件在手册中称为archive(存档)
生成lib的命令为:
tricore-ar [--error-numbers] [-]<option>[<modifier>] <archive> [<member> ...]
Tricore-ar由命令行选项控制。这些命令行选项总是一个字母,指定要执行的操作,以及一个或多个可选修饰符,用于修改操作的默认行为。tricore期望有一个定义要做什么的选项(可选地使用修饰符)和一个被操作的lib。
大多数unix工具都希望在选项前面加一个破折号[-]。这个破折号是可选的
option
关键选项option如下:
d:从lib文件中删除模块。指定要删除的模块名称为member。如果没有指定要删除的文件,则lib不会受到影响。如果你指定了‘ v ’修饰符,tricore-ar会列出每个被删除的模块
r:插入文件member…到archive并替换。如果中命名的文件之一…不存在,则显示一条错误消息,并且不干扰任何与该名称匹配的现有存档成员.如果没有列出要添加的文件,tricore-ar将创建一个空归档,其中只包含归档头文件
x[o]:从归档文件中提取成员(名为member)。您可以在此操作中使用修饰符‘ v ’,以请求tricore在提取名称时列出每个名称.如果不指定member,则提取存档中的所有文件
modifier
modifier可以附加在option之后,以指定操作行为的变化
u:通常,tricore-ar会将列出的所有文件插入到存档中。如果只希望插入列表中比现有同名成员更新的文件,请使用此修饰符。‘ u ’修饰符只允许用于操作r(替换)
v:此修饰符请求操作的详细版本。当附加修饰符v时,许多操作显示附加信息,例如处理的文件名
生成lib示例
由上述选项及修饰符可知,生成lib的命令可以为:
tricore-ar rv libTest.a test.o
r表示将.o插入lib,v表示列出插入的具体文件,打印信息如下:
注意:lib名需要以lib开头,且文件类型为.a
当lib中不存在该文件时,显示为a,如果是已存在的文件,则显示为r
解压lib示例
如果想看lib中的有哪些.o文件,可以使用下面的命令:
tricore-ar xv libTest.a
x表示提取lib中的文件,此处没有指定具体的member,所以会提取所有的.o文件到makefile路径
lib的使用
和之前GHS的类似,使用-L指定lib路径,使用-l指定具体的lib名,需要注意的是,lib名需要去除名称前面的lib,和文件类型,使用手册中的说明如下:
在链接过程中,加入lib路径和lib即可
PRJLIB := -lTest
PRJLIBDIR := -L./Build/lib@$(LD) -o "$@" $(OBJS) $(LDFLAGS) $(PRJLIBDIR) $(PRJLIB)
注意:建议将OBJS放到LIB前面,否则使用时可能找不到lib中的函数
总结
大部分编译器的命令都是类似的,遇到问题可以多查手册,加上问deepseek/chatgpt,应该很快就可以搞定~