【轉】TI DSP C6657學習之——編譯靜態庫.lib

熟悉C++開發的的小夥伴都知道,咱們通常代碼中每每要引入許多第三方編譯好的庫,有些是靜態連接庫static library, 有些是動態連接庫dll。引入庫的目的一是減小代碼的編譯時間,二是隻提供函數/方法接口,能夠有效的保護源碼不被泄露。下面將在DSP C6657上編譯靜態庫.libwindows


工具

  • 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_CompleLibui

 

step2:編寫庫文件的代碼

咱們先實現一個簡單函數接口(返回2個整數之和): int add_test(int a,int b)spa

.h文件--------函數的聲明.net

/* * 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文件----函數的具體實現code

/* * 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靜態庫:blog

 

至此,成功生成了.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 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。

相關文章
相關標籤/搜索