新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32之如何編譯出 .lib 文件

STM32之如何編譯出 .lib 文件

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
申明: .lib 文件的一個(gè)“惡心”應(yīng)用,就是必須給別人自己的代碼應(yīng)用,但是又不想直接給C源碼,這時(shí)候就可以把某些機(jī)密 .c 文件編譯成 .lib 文件給別人用。但是個(gè)人建議作為一個(gè)求學(xué)者,不要做這樣的“惡心”事情。當(dāng)然還有其它的一些作用。

本文引用地址:http://butianyuan.cn/article/201611/321349.htm

這個(gè)是生成LIB的技巧.也許大家在網(wǎng)上看到某些程序會(huì)發(fā)現(xiàn),他們用這個(gè)方式來(lái)包含STM32
的庫(kù)文件:


而不是像DX32的例程那樣一堆C:


那么,本技巧篇例程就是教大家怎么生成那個(gè).LIB 的文件的.


首先打開(kāi)本程序,大家看到的整個(gè)工程就只有庫(kù)文件:


因?yàn)檫@是把STM32的函數(shù)庫(kù)編譯成庫(kù)的形式,所以你只需要包含函數(shù)庫(kù)就行.
然后注意一點(diǎn),stm32f10x_conf.h 文件中,所有的include都要開(kāi)放
#include "stm32f10x_adc.h"
#include "stm32f10x_bkp.h"
#include "stm32f10x_can.h"
#include "stm32f10x_crc.h"
#include "stm32f10x_dac.h"
#include "stm32f10x_dbgmcu.h"
#include "stm32f10x_dma.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_flash.h"
#include "stm32f10x_fsmc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_i2c.h"
#include "stm32f10x_iwdg.h"
#include "stm32f10x_pwr.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_rtc.h"
#include "stm32f10x_sdio.h"
#include "stm32f10x_spi.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_wwdg.h"
#include "misc.h"
這是因?yàn)楫?dāng)這堆C文件編譯成*.LIB后,里面的內(nèi)容將是恒定的,不能裁減的.(這是C語(yǔ)言的理
念,跟編譯器什么的無(wú)關(guān)),所以我們必須開(kāi)放所有H 文件,這樣編譯出來(lái)的LIB 文件才是全能
的.這個(gè)理解,就和普通的DX32例程中包含一大堆C文件的意義是一樣的.只不過(guò)是我們先把
庫(kù)函數(shù)那部分預(yù)先編譯成LIB 文件.
然后,就是選擇編譯成LIB:


編譯后的庫(kù)文件的名字是可定義的,這里隨便改個(gè)名字叫LIB.


然后嘛,就是編譯,編譯完成后,LIST目錄上就有一個(gè)LIB.lib文件了,注意文件的后綴名固定為
lib 的.
到這里,一個(gè)LIB文件就弄出來(lái)了,試試拿一個(gè)普通的DX32工程,然后把所有的函數(shù)庫(kù)*.C文
件刪除(注意.H 文件不要?jiǎng)h除,因?yàn)槟阍诔绦蛑羞€要用.H 文件上的很多宏定義,例如
GPIO_Pin_1 這些宏定義),之后再加進(jìn)這個(gè)LIB.lib,注意記得選擇正確的文件類型:
加進(jìn)去后,就可以像往常那樣編譯你的工程了.
到此,LIB的生成和應(yīng)用就完成了。

但有以下的缺點(diǎn)是不容忽略的:
1.為了通用,你必須把整個(gè)庫(kù)都編譯,這樣在程序中就不方便裁減,例如我不用SPI功能,以前
的方式就是在stm32f10x_conf.h 中屏蔽掉一些include,但這個(gè)LIB 方式卻不行.即使你在
工程中保留了stm32f10x_conf.h 文件,并修改它,但這對(duì)已經(jīng)編譯成LIB 的庫(kù)文件的大小
和內(nèi)容不產(chǎn)生影響
2.不方便觀察庫(kù)函數(shù),經(jīng)過(guò)預(yù)編譯的LIB 文件,里面的所有東西都不能以C 的形式看到了,
這樣對(duì)于學(xué)習(xí)來(lái)說(shuō),是有不少影響的.

3.(本人所注)可以把自己的某些機(jī)密.c文件一起編譯成.lib文件,這樣可以保密自己的C源文件。(再次申明,作為求學(xué)大軍中的一員,別這樣做,相互學(xué)習(xí),才能進(jìn)步更快!)




關(guān)鍵詞: STM32lib文

評(píng)論


技術(shù)專區(qū)

關(guān)閉