汽车电子expert成长之路

本博客发布的个人原创精品----嵌入式系统技术文章,欢迎大家参考学习,并转发分享!

S32DS使用Tips--如何编译生成和调用静态库

0
阅读(10478)

内容提要


引言

1. S32DS for ARM v1.3中编译生成和调用静态库的方法和步骤

1.1 编译生成静态库的方法和步骤

1.2 调用静态库的方法和步骤

2. S32DS for ARM v2.0编译生成和调用静态库的方法和步骤

2.1 编译生成静态库的方法和步骤

2.2 调用静态库的方法和步骤

3. S32DS for Power v1.1和S32DS for Power v1.2编译生成和调用静态库的方法和步骤

3.1 编译生成静态库的方法和步骤

3.2 调用静态库的方法和步骤

总结


引言


之前写了一篇《CodeWarrior IDE使用Tips-如何编译生成和调用静态库》,最近很多读者问我S32DS下如何编译生成和调用静态库,所以,这里我把在S32DS下编译生成和调用静态库的方法和步骤给大家介绍一下,以方便大家参考和学习。

关于使用静态库的好处和意义,请参考之前的公众号文章《CodeWarrior IDE使用Tips-如何编译生成和调用静态库》,这里不再赘述;


在S32DS IDE下静态库文件的后缀名不再是.lib而是.a。由于S32DS有多一个版本,本文主要介绍目前正在用的几个S32DS的主流版本--S32DS for ARM v1.3和v2.0以及S32DS for Power V1.1和v1.2;


1. S32DS for ARM v1.3中编译生成和调用静态库的方法和步骤


1.1 编译生成静态库的方法和步骤


Step1:创建一个新的S32DS for ARM v1.3应用工程:


a. 菜单栏File-->New-->New S32DS Project:

8.jpg

b. 输入工程名,选择工程类型为Library project(默认为Elf S32DS project,将编译链接生成二进制可执行文件),选择正确的MCU part number,和工具链(默认为Standard S32DS toolchain for ARM--GCC toolchain)-->next:

:

9.jpg

c. 选择正确的内核和开发语言配置-(这里使用默认配置)->Finish:

10.jpg

Step2:添加需要编译到该静态库的C代码头文件(*.h)和源文件(*h):

11.jpg

Tips: 


  • 可以在一个静态库中添加多个C代码头文件(*.h)和源文件(*h),也可以通过将函数或者变量申明为extern类型作为库接口以调用应用工程输入;


  • 另外,如果用户将C代码的头文件添加到自己新建的目录或者默认的src目录下,必须将其添加到C compiler的Includes paths下,否则会报文件找不到的错误:

12.jpg

step3:编译工程,即可在相应的编译目标文件夹下生成静态库文件:

13.jpg

1.2 调用静态库的方法和步骤


Step1:新建一个应用工程并将要调用的库文件和头文件添加到应用工程目录下,在调用静态库的C文件中包含相应的静态库函数和变量申明头文件即可调用:

14.jpg

Step2:工程属性中将包含静态库函数和变量申明头文件的目录添加到C Copiler的Include Paths:

15.jpg

Step3:设置链接器,添加要调用的静态库和相应的文件路径:

16.jpg

Tips:设置Libraries时,需要在英文输入法下输入双引号和冒号:

":libS32K144_Lib_Prj.a"


Step4:完成以上设置后,重新编译应用工程,即可。


2. S32DS for ARM v2.0编译生成和调用静态库的方法和步骤


2.1 编译生成静态库的方法和步骤


S32DS for ARM v2.0支持在新建工程时创建生成静态库的工程,所以在S32DS for ARM v2.0下创建静态库就非常方便了:


Step1:创建一个S32DS Library Projec

a. 菜单File-->New-->S32DS Library Project

17.jpg

b. 输入工程名,选择正确的MCU part number,和工具链(默认为Standard S32DS toolchain for ARM--GCC toolchain)-->next:

18.jpg

c. 选择正确的内核和开发语言配置-(这里使用默认配置)->Finish:

19.jpg


20.jpg

这样就创建了可以编译生成静态库文件的工程,而且默认添加了一个库的C代码源文件和头文件,用户只需添加相应的函数和代码即可。

Step2:添加需要编译到该静态库的C代码头文件(*.h)和源文件(*h):


8.jpg

Step3:编译工程,即可在相应的编译目标文件夹下生成静态库文件:

9.jpg

2.2 调用静态库的方法和步骤


S32DS for ARM V2.0下静态库的调用方法与上面1.2小节介绍的S32DS for ARM v1.3中调用静态库的方法和步骤一样,这里就不再赘述了。


3. S32DS for Power v1.1和S32DS for Power v1.2编译生成和调用静态库的方法和步骤


3.1 编译生成静态库的方法和步骤


S32DS for Power v1.1和S32DS for Power v1.2支持在新建工程时创建生成静态库的工程,所以在SS32DS for Power IDE中创建静态库就非常方便了:


Step1:创建一个可以生成静态库的工程:


a. 菜单File-->New-->S32DS Library Project

10.jpg

b. 输入工程名,选择工程类型为Library project(默认为Elf S32DS project,将编译链接生成二进制可执行文件),选择正确的MCU part number,和工具链(默认为Standard S32DS toolchain for ARM--GCC toolchain)-->next:

11.jpg

c. 选择正确的内核和开发语言配置-(这里使用默认配置)->Finish:

12.jpg

这样就创建了可以编译生成静态库文件的工程,而且默认添加了一个库的C代码源文件和头文件,用户只需添加相应的函数和代码即可:


Step2:添加需要编译到该静态库的C代码头文件(*.h)和源文件(*h):

13.jpg

Step3:编译工程,即可在相应的编译目标文件夹下生成静态库文件:

14.jpg

3.2 调用静态库的方法和步骤


在S32DS for Power v1.1和S32DS for Power v1.2调用静态库的方法跟S32DS for ARM 类似:


Step1:新建一个应用工程并将要调用的库文件和头文件添加到应用工程目录下,在调用静态库的C文件中包含相应的静态库函数和变量申明头文件即可调用:

15.jpg

Step2:工程属性中将包含静态库函数和变量申明头文件的目录添加到C Copiler的Include Paths(此步骤不是必要的,如果将静态库的头文件加到工程的include命令下,则无需此步操作):


Step3:设置链接器,添加要调用的静态库和相应的文件路径:

16.jpg

Tips:设置Libraries时,需要在英文输入法下输入双引号和冒号:":libMPC5744P_Lib_Prj.a"


Step4:完成以上设置后,重新编译应用工程,即可。


总结


本文详细介绍了不同S32DS版本中如何编译生成和调用静态库的方法和步骤,创建工程时,选择使用S32DS的Library Project,可以非常容易的创建生成静态库的S32DS工程。调用静态库时,所有版本的S32DS的方法都差不多,首先需要将要调用的静态库文件及其函数和变量接口的申明头文件一起添加到应用工程,并在应用工程属性中设置相应的链接器(Linker)选项,让链接器可以识别找到要调用的静态库,需要特别注意的是在设置Linker的Libraries时,需要在英文输入法下输入双引号和冒号:":被调用的静态库(*.a文件)"。

胡恩伟

NXP汽车电子FAE

若对本文观点有任何意见和建议欢迎留言指出。

如果喜欢,可以关注本人公众号,阅读更多精彩内容。