【转】TI DSP C6657学习之——编译静态库.lib
熟悉C++开发的的小伙伴都知道,我们一般代码中往往要引入许多第三方编译好的库,有些是静态链接库static library, 有些是动态链接库dll。引入库的目的一是减少代码的编译时间,二是只提供函数/方法接口,可以有效的保护源码不被泄露。下面将在DSP C6657上编译静态库.lib
工具
- DSP C6657 EVM官方评估板
- CCS8.1
- win10 PC
编译静态库
思考
Visual Studio 2017上编译静态库static library的过程:
- 新建一个.h头文件(写函数的声明)
- 新建一个.cpp文件(写函数的具体实现)
- 在vs2017中的工程属性中,将编译输出改为static library
- 生成解决方法,编译出.lib库文件
- 测试,新建一个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

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静态库:

至此,成功生成了.lib文件,很激动有木有!
测试运行
新建一个工程,取名:DSP6657_TestComplieLib。将上一步的.lib以及.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起来... 运行结果:

作者:侠之大者_7d3f 链接:https://www.jianshu.com/p/30257579e092 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
【转】TI DSP C6657学习之——编译静态库.lib的更多相关文章
- VS编译静态库 .lib 其中Release 版本比Debug版本要大好多原因
如果工程代码使用了: 把此选项关闭即可减少库大小不少:
- ndk学习8: 编译动态库
目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境) 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc -g -c -fpic -W ...
- ndk学习7: 使用静态库
目录: 手工编译静态库 ndk-build编译静态库 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc –g –c mod1.c mod2.c mod3. ...
- 【iOS】编译静态库
与java和.net一样,objc也由类库的概念,不过在在objc上一般叫库,库表示程序代码集合,可以共享给其他程序使用,库是编译后的二进制文件,因此不能看到源代码,多用于一些开放sdk(如百度地图s ...
- 关于使用Visual编译静态库动态库及其使用的问题
本文主要讲述了如何使用Visual Studio 2013 编译静态库和动态库,并使用. 一.静态库 1. 编写静态库 若要创建将引用并使用刚创建的静态库的应用程序,请从“文件”菜单中选择“新建”, ...
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
android ndk-build 编译静态库libxx.a 需求场景: 目前有安卓编码好的现在的openssl的两个.a,我们需要调用openssl的函数,并把功能再封装成.a; 这样使用时,在an ...
- linux+vs2013编译静态库和动态库
Linux下创建与使用静态库 Linux静态库命名规则 Linux静态库命名规范,必须是"lib[your_library_name].a":lib为前缀,中间是静态库名,扩展名为 ...
- cmake opencv,dlib 编译静态库 1
无论windows,linux 所有的库 ,dlib,opencv 通过cmake-gui 设置好静态库, 动态库,和其他各个选项 Tips: cmake 优先级用cmake-gui,因为命令太多,容 ...
- Makefile 编译静态库文件及链接静态库
本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h 3 atexit.c Makefile 5 staticlib/lib/ staticlib ...
随机推荐
- IDEA查看接口的实现类
查找接口的实现类: 快捷键 ctrl + alt +B 再按F2查看详细文档注解 查看类或接口的继承关系: ctrl + h
- [LeetCode] 463. Island Perimeter 岛的周长
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- 一键安装docker-ce
curl https://get.docker.com |env CHANNEL=stable sudo sh -s docker --mirror Aliyun
- kubernetes-批量删除Evicted Pods
#!/bin/bash for i in `seq 1 100` do kubectl delete pod $(kubectl get pod -n service |grep -i "e ...
- close yarn install --check-files
To disable this check, please add `config.webpacker.check_yarn_integrity = false` to your Rails deve ...
- Integer.highestOneBit(int i)方法的作用与底层实现
在Integer类中有这么一个方法,你可以给它传入一个数字,它将返回小于等于这个数字的一个2的幂次方数.这个方法就是highestOneBit(int i). 比如下面的Demo,注意方法的输入与返回 ...
- 嵌入式02 STM32 实验01 端口复用和重映射
内设与外设: 端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设? 内设:单片机内部集成的功能一般包括:串口模块.SPI模块(Serial Peripheral Interface ...
- python函数知识七 闭包、装饰器一(入门)、装饰器二(进阶)
21.闭包 闭包:在嵌套函数内,使用非全局变量(且不使用本层变量) 闭包的作用:1.保证数据的安全性(纯洁度).2.装饰器使用 .__closure__判断是否是闭包 def func(): a = ...
- String和Irreducible Polynomial(2019牛客暑期多校训练营(第七场))
示例: 输入: 4000010010111011110 输出: 00001001 0111 01111 0 题意:给出一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自 ...
- NGINX 配置本地HTTPS(双向认证)
一.SSL协议加密方式 SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密. 1 ...