【DSP开发】DSP能用VS2010生成的链接库文件吗?
【DSP开发】DSP能用VS2010生成的链接库文件吗?
声明:引用请注明出处http://blog.csdn.net/lg1259156776/
说明:可能这个问题让行家看上去就会莞尔一笑,但是很多时候在开发中经常被这种莫名其妙的想法给迷住,实际上是对其中涉及到的一些基本概念和原理不太清楚所致,本文将对这个问题进行详细的分析。
我们有时说C/C++语言是源码级别的跨平台,主要是指的是在不同的操作系统平台上,编译器所支持的语法是相同的,对应的函数接口是相同的,但是对应到下面的库文件、可执行文件则是平台相关的。这也就是为何安装配置opepcv的时候,利用cmake生成相应的平台下的工程文件或者makefile,然后进行编译运行,生成对应平台相关的库文件。而库文件实际上参与到链接的阶段,基本上算是等同于经过了编译、汇编后生成的目标文件(.o或.obj),而经过汇编之后生成的就是对应的机器码了,所以说库文件是平台相关的。
明白了上面的道理,我们来看这个问题,实际上就直接不是问题了,因为VS2010生成的是windows下的机器码,而CCS3.3或CCS5.4生成的是DSP目标处理器上的机器码。这两个平台根本不一样。
举个例子,运行时库,对应的DSP的不同平台,其运行时库都不一样,更别提windows了。运行时库中就包含着对应C语言规范中定义的各种库函数等等。
所以,想直接利用VS2010生成的库,那可能没那么简单。不妨可以试一试,利用VS2010生成一个简单的函数库,实现加法,然后将生成的库拷贝到DSP开发环境CCS工程下,包含引用,并参与编译链接,看看能否编译通过,并且成功下载到DSP运行。
这里还要说明一点,我现在并不太清楚对DSP是不是有动态链接库的概念,可能也有,但感觉好像得是静态链接库才行?这一点存疑,具体编译原理还没有弄太懂,回头再补上。
最好的方法,还是将对应的源文件,拷贝到CCS中,创建生成库的工程,修改代码重新编译链接后生成相应的库,然后才能安心的使用。
感觉:有点没太理解这个内容,现在发现越来越迷糊,这文章估计不对说的。不,很难讲!
在windows下配置了gcc,然后可以生成可执行文件.exe,这个exe文件到底是啥?真的是所谓的机器码,二进制码吗?怎么感觉不像呢?exe真的是运行在硬件之上吗?哭了!
【2015-10-22增】经过初步测试,使用CCS编译生成的静态链接库,使用MinGW基于windows下的gcc进行链接,使用命令ar t xx.lib可以解析出对应的obj文件,也可以通过ar -v -x xx.lib将目标文件解析出来。但是再进行解读obj文件时会发生错误,说是没有组织。而且在调用这个库中的文件时,也会出现问题没有发现对应函数的问题。
这说明了一个问题,就是不同的编译器在同一个操作系统之上采用的归档格式可能是一样的,因此可以解析出lib文件中所包含的obj文件,但是obj文件却是与目标处理器相关的。CCS生成的obj文件中包含的是对应DSP64xx的机器码,而MinGW的gcc则包含的是intel的处理器的机器码。所以库文件是编译器、处理器、操作系统相关的,并不能通用,而只能实现对应相同的函数接口,在不同的平台上(指的是编译器、处理器、操作系统)上要有相对应的库文件才能使用。
另外,还想再说一点,对于库,要注意以下几点:
1. 静态还是动态?
2. 导出函数与导出全局变量的声明和定义方式;
3. 动态链接库的入口函数定义;
2015-10-25心得总结 张朋艺
【DSP开发】DSP能用VS2010生成的链接库文件吗?的更多相关文章
- 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件
[Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...
- 基于FPGA视频时序生成中的库文件
上一篇分享了一个视频时序生成代码,下面我根据之前项目中用到的时序,对各个参数做了库文件,方便调用. -- -- Package File Template -- -- Purpose: This pa ...
- IOS开发:使用lipo合并armv7,i386,armv7s库文件
假设多个版本的lib分别是 libxxx.armv7.a , libxxx.armv7s.a, libxxx.i386.a我们的目标是 把他们合并成超级通用版的libxxx.a 打开命令行 Term ...
- g++ 生成C++ .so库文件,并调用示例
Tags: g++ C++ so library 在Linux系统下用g++命令编译C++程序.也可以生成so,a链接库 示例一 编译时链接so库 Test.h 文件内容 Main.cpp ...
- VS2008 生成静态链接库并使用
1.启动VS2008创建一个Win32控制台程序 2.选择静态库 3.创建两个文件lib.h和lib.cpp //lib.h #ifndef LIB_H #define LIB_H int add(i ...
- Cocos2d-x 开发 v3.2 建立新项目并添加库文件
一.添加其它类库 3.0以上的设计耦合性强,项目中模块常以库的形式存在,需常添加链接库.在3.0中经常用到CocoStudio 编辑器的资源数据,所以需要添加CocoStudio 库. 1.1 ...
- Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件
最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了 只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下: ...
- 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
[DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...
- VS2010编译Boost 1.57 静态链接库
http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...
随机推荐
- 设置 IntelliJ IDEA 主题
一.选择File选项====>Settings====>Appearance====>Theme====>三选一切换主题
- django中非菜单权限的归属
非菜单权限的归属 : 1.设置表结构 : 在权限表中添加自连接的外键patent,parent_id连接permission表的id,可为空,当有parent_id时,说明它是一个普通 ...
- Activiti服务类- FormService服务类
转自:https://www.cnblogs.com/liuqing576598117/p/9814953.html 1.获取//通过流程定义ID获取表单字段集合StartFormData start ...
- Shell 02 数据运算/条件测试
一.整数运算工具 1.使用expr命令(运算两边必须有空格,引用变量时必须加$符号) [root@svr5 ~]# x=10 //定义变量x expr $x + 10 20 ...
- 添加tag
创建tag git tag -a V1 -m 'release 1' 创建了本地一个版本v1,同时添加注释 release 1 查看tag git tag 显示注释 git show V1 本地tag ...
- 题解 CF550A 【Two Substrings】
为什么我的做法跟别人如此不一样啊qwq 思路:暴力判每一个"BA"出现的位置,二分查找他前/后有没有满足条件的"AB",时间复杂度\(O(n\log_{2}n) ...
- Docker安装mysql5.6
1.docker hub 上查找mysql镜像 2.在docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.6 3.使用mysql5.6创建容器(也叫运行镜像) 4.交互运行,进入m ...
- 笔记七(编写第一个UEFI程序)
搭建好uefi开发环境之后,在MyWorkspace文件夹中建立一个文件夹ExamplePkg; ,然后在ExamplePkg文件夹中创建HelloWorld文件夹,Include文件夹,Exampl ...
- Linux设备驱动程序 之 延迟执行
长延迟 有些驱动程序需要延迟比较长的时间,即长于一个时钟滴答: 忙等待 如果想把执行延迟若干个时钟滴答,或者对延迟的精度要求不高,最简单的实现方法就是一个监视jiffies计数器的循环:这种忙等待的实 ...
- FYI是什么意思?
FYI是For Your Information的缩写,英语解释为:提供给您的信息,供您参考,是当前在外企中流行的英文缩写,为工作用语,常用于工作的电子邮件中. 文章来源:刘俊涛的博客 欢迎关 ...