这两天将dsp的算法程序放到ccs下,生成lib库文件
这样的好处就是:
1. 算法封装成lib库以后,看不到源码,保证了代码的安全性;
2. 在ccs下,对每个算法的运行时钟数可以直观的得到,方便进行优化处理;
3. 调试算法方便,在linux下的调试还是不顺手。

在ccs下建立lib文件比较简单,建立个lib工程,把.c和.h文件加进去
built一下就OK了,不过built前最好先clean一下
有几次没clean结果好像没生成新的lib文件,具体原因也没研究,懒

网上查了点资料,说linux下不能用lib库的,心一凉
不过老伟说可以的,还给我发了个他和小师弟一起做的文档
照着做了一下,还真可以
想了想,为什么能用lib库呢
应该是用交叉编译器的原因吧,不是gcc编译的,估计是这样
我把文档贴一下吧,我保存文档的能力真的不强

----------------------------------------------------------文档分割线-----------------------------------------------------------
1、/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/package.bld文件中修改之处:
var SRCS =["videnc_copy","colorspace","OSD"]; 指出要编译的.c文件的文件名

2、/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/package.xdc文件增加之处:
requirescodecs.videnc_copy.DavinciLib;  增加DavinciLib库

3、在/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy目录下增加了DavinciLib文件夹,其中包含以下文件:
CCS已编译的 Davinci_VLPR_lib.lib 文件, LPRSYS.h 文件。 LPRSYS.h 和videnc_copy.c文件用到的头文件及其变量定义所在的头文件都要放在新增的DavinciLib库文件夹里。
Videnc_copy.c文件中需要增加:
#include "DavinciLib/LPRSYS.h"//由于在Videnc_copy.c文件中包含LPRSYS.h中所要使用的变量,

另外,为使加进去的文件能被加载运行,需要增加一些定义运行规则的文件:
/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.xs
将其代码改为:
function getLibs(prog)
{
    var name =null;
    if(prog.build.target.isa == "64P") {
       var name = "Davinci_VLPR_lib.lib"; //此处name值改为Davinci_VLPR_lib.lib

print("    willlink with " + this.$name + ":" + name);
    }
    return(name);
}

/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/Makefile
将其代码改为:
EXAMPLES_ROOTDIR := $(CURDIR)../../..//CURDIR为当前目录,向上3级目录寻找xdcpaths.mak文件
include $(EXAMPLES_ROOTDIR)/xdcpaths.mak
# [CE] add the examples directory itself to the list of paths topackages
XDC_PATH := $(EXAMPLES_ROOTDIR);$(XDC_PATH)
include $(EXAMPLES_ROOTDIR)/buildutils/xdcrules.mak

/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.xdc
将其代码改为:
requires ti.sdo.ce.video;
package codecs.videnc_copy.DavinciLib { //设置路径
}

/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.bld
将其代码改为:
Pkg.attrs.profile = "debug";
Pkg.attrs.exportAll = true;
------------------------------------------------------------文档分割线---------------------------------------------------------

几点说明一下:
1. 我的codec engine是在videnc_copy工程上改的
   Davinci_VLPR_lib.lib 文件是CCS已编译的
    LPRSYS.h文件是库的头文件
2. 第一条 var SRCS =["videnc_copy","colorspace","OSD"] 没看明白
   "colorspace"和"OSD"应该是生成lib文件的源码文件
   但是既然用了lib文件,干嘛还要添加源码文件了。
   实践了一下,将第一条改为var SRCS =["videnc_copy"]
    OK的。
3. package.xs、Makefile、package.xdc、package.bld文件可以自己生成一下
   只要里面的代码对就行。

codec engine工程中使用ccs下编译的lib库的更多相关文章

  1. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  2. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  3. 优雅解决 SpringBoot 工程中多环境下 application.properties 的维护问题

    微信号:geekoftaste, 期待与大家一起探讨! 背景 我们知道 SpringBoot 有一个全局的配置文件 application.properties, 可以把工程里用到的占位符,第三方库的 ...

  4. Mac下编译libpomelo静态库,并在cocos2dx项目中引用

    最近在学习cocos2dx的过程中需要和服务器进行交互,所以这几天在学习libpomelo静态库的编译和使用.之前在windows系统下编译libpomelo,并在VS中引入比较顺利:但是,目前对Ma ...

  5. VS2015——命令行下编译、静态库动态库制作以及断点调试

    c程序编译流程 程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的 ...

  6. ffmpeg学习笔记-Linux下编译Android动态库

    Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库 文件准备 要编译生成Android需要以下文件 NDK ffmpeg源代码 NDK下载 NDK可 ...

  7. Linux下编译安装PCRE库

    备注:如果没有root权限,使用 --prefix 指定安装路径 ./configure --prefix=/home/work/tools/pcre-8.xx =================== ...

  8. Linux下编译使用boost库:

    Boost是什么不多说, 下面说说怎样在Linux下编译使用Boost的所有模块. 1. 先去Boost官网下载最新的Boost版本, 我下载的是boost_1_56_0版本, 解压. 2. 进入解压 ...

  9. linux下编译自己的库文件实践

    有了我传的那个资料,这个就没什么用了,那个太经典了,这个就是记录我自己的实践.:-) linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.s ...

随机推荐

  1. error C2712: Cannot use __try in functions that require object unwinding

    转自VC错误:http://www.vcerror.com/?p=52 问题描述: error C2712: Cannot use __try in functions that require ob ...

  2. SpringCloud学习笔记(六):Feign+Ribbon负载均衡

    简介 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebS ...

  3. AYITOJ-括号序列-栈的入门

    题目描述 给定一个由括号组成的字符串 问其是否为一个合法的括号序列 合法的括号序列的定义如下 1. 空字符串是合法的括号序列 2. 若字符串A是合法的括号序列, 那么{A},[A],(A)也是合法的括 ...

  4. Spring - 框架入门

    认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP( ...

  5. 01_springboot2.x之springboot入门

    1.简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用. 优点: 1.简化Spring应用开发的一个框架: 2.整个S ...

  6. 读《深入PHP 面向对象、模式与实践》笔记

    1. include() 和require() 语句的不同在于它们如何处理错误.使用require()调用文件发生错误时,将会停止整个程序;调用include()时遇到相同的错误,则会生成警告并停止执 ...

  7. nodejs vue 微信公众号开发(二)申请微信测试号

    1.打开微信测试公众号开发平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码登陆

  8. csscomb配置文件说明

    { "always-semicolon": true, // 总是显示分号 "block-indent": " ", // 代码块缩进,可以 ...

  9. Hibernate 查询语言

    查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...

  10. npm install模块时 报错:not such file or directory

    通过报错信息可以知道,是因为缺少 package.json 这个文件. 解决方法: 首先,初始化项目,一路回车就行 npm init -f 接着安装依赖 npm install formidable ...