这两天将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. VS2010-MFC(MFC常用类:MFC异常处理)

    转自:http://www.jizhuomi.com/software/236.html 上一节讲了CFile文件操作类,本节主要来说说MFC异常处理. 在鸡啄米C++编程入门系列的最后一节鸡啄米:C ...

  2. 豌豆荚Redis集群方案:Codis

    Codis简介 Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到CodisProxy和连接原生的RedisServer没有明显的区别(不支持的命令列表),上层应用可以像使用单机的R ...

  3. Java学习之垃圾回收机制

    垃圾回收机制,依赖JRE和JVM,涉及操作系统中内存的分配与回收.依据所学,我猜想这种机制需要的数据结构是堆内存分配表(链),管理已分配和未分配的堆内存,对于已分配堆内存,需要知道由栈内存中的哪些变量 ...

  4. 打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口。 语法: window.open([URL], [窗口名称], [参数字符串])

    打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL: ...

  5. 一个tcp连接可以发多少http请求

    -----来自:松若章 -----zhuanlan.zhihu.com/p/61423830 曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学 ...

  6. opencv-识别手写数字

    首先拆分图片得到数据 #include "stdafx.h" #include <iostream> #include "opencv2/opencv.hpp ...

  7. html--浮动高度塌陷问题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. [JZOJ4759] 【雅礼联考GDOI2017模拟9.4】石子游戏

    题目 描述 题目大意 在一棵树上,每个节点都有些石子. 每次将mmm颗石子往上移,移到根节点就不能移了. 双方轮流操作,问先手声还是后手胜. 有三种操作: 1. 询问以某个节点为根的答案. 2. 改变 ...

  9. light oj 1231 dp 多重背包

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...

  10. PHP面向对象访问修饰符的基本了解

    l 文档的介绍: 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义 ...