美文网首页
TI DSP C6657学习之——编译静态库.lib

TI DSP C6657学习之——编译静态库.lib

作者: 侠之大者_7d3f | 来源:发表于2018-08-27 12:49 被阅读324次

熟悉C++开发的的小伙伴都知道,我们一般代码中往往要引入许多第三方编译好的库,有些是静态链接库static library, 有些是动态链接库dll。引入库的目的一是减少代码的编译时间,二是只提供函数/方法接口,可以有效的保护源码不被泄露。下面将在DSP C6657上编译静态库.lib


工具

  • DSP C6657 EVM官方评估板
  • CCS8.1
  • win10 PC

编译静态库

思考

Visual Studio 2017上编译静态库static library的过程:

  1. 新建一个.h头文件(写函数的声明)
  2. 新建一个.cpp文件(写函数的具体实现)
  3. 在vs2017中的工程属性中,将编译输出改为static library
  4. 生成解决方法,编译出.lib库文件
  5. 测试,新建一个vs工程,将.h和.lib加入工程目录,在cpp中包含.h文件,直接调用函数。

DSP上编译静态库和Visual Studio上的区别
相同之处:都要编写.h,cpp文件,工程输出设置为static library。不同之处:采用不同的complier编译cpp,vs2017采用Microsoft C++编译器编译cpp, DSP上采用gmake编译cpp。

DSP上编译静态库

step1:新建一个CCS Project

注意:

配置项 配置 含义
Family C600 TMS320C6657 DSP的型号
Complier version TI v8.2.4(根据CSS) 编译器版本,CCS可以设置多个版本的编译器
Output type Static Library(重要) 编译输出文件的格式,编译静态库选择Static Library
Device endianness little 内存的大小端

工程名称:DSP6657_CompleLib


image.png

step2:编写库文件的代码

我们先实现一个简单函数接口(返回2个整数之和):
int add_test(int a,int b)

.h文件--------函数的声明

/*
 * add_test.h
 *
 *  Created on: 2018年8月22日
 *      Author: weiPenghui
 */

/*
 * 测试编译静态库.lib文件
 * 方法:
 * step1:新建CCS工程时,将ToolChain设置为 static Library
 * step2:编写.h,c文件
 * step3:build生成.lib文件
 *
 * 总结:和windows上C/C++ lib编译的方法相似
 *参考:https://blog.csdn.net/sphinz1/article/details/78817234
 */


#ifndef ADD_TEST_H_
#define ADD_TEST_H_

extern int add_test(int a,int b);




#endif /* ADD_TEST_H_ */

.c文件----函数的具体实现

/*
 * add_test.c
 *
 *  Created on: 2018年8月22日
 *      Author: weiPenghui
 */

#include"add_test.h"

int add_test(int a,int b){

    return a+b;

}

step3:编译生成lib

Project->Build Project 在工程目录生成lib静态库:


image.png

至此,成功生成了.lib文件,很激动有木有!


测试运行

新建一个工程,取名:DSP6657_TestComplieLib。将上一步的.lib以及.h文件复制到测试工程的根目录。


image.png

编写main()函数里面的代码,调用.h中的接口函数:


/**
 * main.c
 */
#include<stdio.h>
#include<stdlib.h>
#include"add_test.h"

/*
 * 测试调用编译好的静态库.lib
 * 方法:将静态库文件.lib,头文件.h加入工程
 */

int main(void)
{

    int num1 = 10;
    int num2 = 12;

    int res = add_test(num1,num2);

    printf("num1=%d,num2=%d,res=%d\n",num1,num2,res);

    return 0;
}

Run起来...
运行结果:


image.png

end

每天开心学习硬件,学会对比,举一反三。感谢甜心 的支持,Go on...

相关文章

  • TI DSP C6657学习之——编译静态库.lib

    熟悉C++开发的的小伙伴都知道,我们一般代码中往往要引入许多第三方编译好的库,有些是静态链接库static lib...

  • Fortran(11)-静态库和动态链接库

    lib与dll库 lib为静态库,把源代码编译,打包生成.lib文件,以后的工程可直接链接。很多编译器的运行时库可...

  • 静态链接库

    静态链接库:一种函数库,已经是编译完毕的二进制文件,静态库后缀: windows :.lib linux: .a ...

  • C-3

    DLL-动态链接库 lib-静态链接库 编译成obj文件之后,将多个obj文件连接成lib文件。当程序用到lib里...

  • C++ 静态链接库编程

    1.新建项目 2.实现最简单的静态库 3.测试lib 编译,在项目下面生成一个lib文件,将.lib文件放入lib...

  • windows动态库和静态库

    梳理下项目中常用的动态库、静态库使用方式。 静态库 静态库工程生成一个静态库lib文件。 参考文献6制作lib后,...

  • cdll与windll

    库的本质就是一个打包好的代码包,一般分为静态(.lib .a)和动态(.dll .so)。静态库在主程序编译时就会...

  • Java 调用本地代码库

    什么是动态链接库 C/C++编译出来的库有两种:静态链接库和动态链接库。 静态库后缀名在Windows上是.lib...

  • linux下静态库和动态库创建和使用

    linux静态库 .a ===== win 静态库 .lib linux动态库 .so ==== win动态库 ....

  • VC++(十九)动态链接库

    静态库函数和数据被编译进一个二进制文件(.LIB)。在使用静态库下,在编译连接可执行文件时,链接器从库中复制这些函...

网友评论

      本文标题:TI DSP C6657学习之——编译静态库.lib

      本文链接:https://www.haomeiwen.com/subject/wemziftx.html