6.3. 如何给 SDK 工程添加第三方库

6.3.1. 第三方库包含的文件

一些情况下,会需要添加第三方提供的库文件(.a 文件)。一般来说,主要是需要添加下面两种的文件:

  1. 头文件 (.h) 文件。这些文件里面,一般包含了对应的函数声明(也就是 .a 文件中对外提供的函数的声明)

  2. .a 文件本身,其中包含了函数体的实现

6.3.2. 添加第三方库前需要确认的事情

在添加第三方库之前,需要确认的事情如下:

  1. 确认第三方库的编译参数,与当前的 SDK 的编译参数保持了一致。因为不同的 SDK,使用的指令集可能有所差异。 一定要首先确保,第三方库和SDK的编译参数保持一致(特别是 -target xxx 参数以及 -mcpu=xx 参数。

Note

如果你是第三方库的作者,想要自己打包一个第三方库,参考文档:在已经有了标准 SDK 工程的情况下,如何获得编译库的工程

  1. 确认你当前使用的 SDK 是 Code::Blocks 工程、Makefile 工程,还是 VSCode 工程。 不同的工程,需要对应修改不同的位置。

6.3.3. 添加第三方库需要修改的地方

添加第三方库,主要是需要修改下面一些地方:

  1. 复制 .a 库文件到 SDK 工程目录中,例如 include_lib\liba\${CPU}\ 目录下。${CPU} 表示 CPU 型号,例如 br23。 具体参考 SDK 对应目录。

  2. 复制 .h 头文件到 SDK 工程目录中,例如 include_lib\liba\3rd\ 目录下。如果目录不存在,可以自行建立

  3. 修改链接参数,添加对应 .a 库文件所在的路径。

下面,以一个 libtest.a 以及 libtest.h 为例,具体说明在 AC695X SDK 中,对于不同的工程,如何修改:

  1. 复制 libtest.a 到 SDK 工程目录中,示例中是 include_lib\liba\${CPU} 目录,如下图所示:

  2. 复制 libtest.h 到 SDK 工程目录中,示例中是 include_lib\3rd 目录,如下图所示:

  3. 修改链接参数,添加 libtest.a 所在的相对路径。

    1. 如果你是用SDK是用的 Code::Blocks 工程,如下图操作:

    2. 如果你是用的 Makefile 或者 VSCode(也是用Makefile),如下图操作:

    在修改完链接参数后,可以测试调用 libtest.a 中的函数

  4. 测试调用 libtest.a 中的函数,如下图所示(以 Code::Blocks 为例)

Important

如果 #include 的时候提示无法找到头文件,可能你还需要修改头文件的搜索路径