



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Go語(yǔ)言非main包編譯為靜態(tài)庫(kù)并使用的示例代碼Go語(yǔ)言項(xiàng)目中基本上都是以源碼的形式提供包,對(duì)公司或者企業(yè)而言,如果想要隱藏關(guān)鍵代碼怎么辦?
我們可以將Go的非main包編譯為靜態(tài)庫(kù)提供給用戶(hù)使用。下面以Windows為例,介紹一下如何將Go的非main包編譯為靜態(tài)庫(kù),用戶(hù)又將如何使用。
筆者使用的VSCode,在終端中查看Go的環(huán)境變量,主要看GOROOT以及GOPATH,筆者的GOROOT在C:\ProgramFiles\Go。
二、常規(guī)工程
在任意地方新建一個(gè)目錄,假設(shè)為test,然后使用VSCode打開(kāi)。我們創(chuàng)建如下3個(gè)工程文件:
main.go
packagemain
import(
"test/libDemo"
funcmain(){
libDemo.CallMe()
}
go.mod
moduletest
go1.16
libDemo.go
packagelibDemo
import"fmt"
funcCallMe(){
fmt.Println("libDemoBeCall...")
}
目錄結(jié)構(gòu)如下圖所示:
在main.go文件窗口,按F5運(yùn)行,可以看到正常執(zhí)行結(jié)果:
三、將libDemo編譯為靜態(tài)庫(kù)
1.移動(dòng)libDemo
將libDemo目錄移動(dòng)到${GOROOT}\src下,筆者的為C:\ProgramFiles\Go\src。此時(shí)再運(yùn)行會(huì)報(bào)錯(cuò)了:
主要是import的路徑不對(duì)了,把test/去掉即可。
2.編譯libDemo為靜態(tài)庫(kù)
$goinstalllibDemo
此時(shí)可以在C:\ProgramFiles\Go\pkg\windows_amd64中看到相應(yīng)的靜態(tài)庫(kù)文件libDemo.a
3.將libDemo源碼從C:\ProgramFiles\Go\src移動(dòng)走,即模擬用戶(hù)沒(méi)有源碼,只有靜態(tài)庫(kù)的情況。
此時(shí)再運(yùn)行又會(huì)出現(xiàn)找不到libDemo的錯(cuò)誤,不能直接運(yùn)行了。
4.編譯main.go
進(jìn)入main.go所在目錄,編譯main.go:
gotoolcompile-I"C:\ProgramFiles\Go\pkg\windows_amd64"main.go
在編譯時(shí)需要加入-I選項(xiàng)包含目錄路徑"C:\ProgramFiles\Go\pkg\windows_amd64",路徑中有空格需要加引號(hào),編譯成功后會(huì)生成main.o
5.鏈接main.o
gotoollink-otest.exe-L"C:\ProgramFiles\Go\pkg\windows_amd64"main.o
-L選項(xiàng)指定鏈接時(shí)搜索的庫(kù)路徑,鏈接成功會(huì)生成test.exe
6.運(yùn)行test.exe
可以看到正常輸出:
$./test.exe
libDemoBeCall...
如果我們把C:\ProgramFiles\Go\pkg\windows_amd64\libDemo.a刪除,再鏈接就會(huì)報(bào)錯(cuò):
C:\ProgramFiles\Go\pkg\tool\windows_amd64\link.exe:cannotopenfileC:\ProgramFiles\Go\pkg\windows_amd64\libDemo.a:openC:\Progra
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年火鍋底料合作協(xié)議書(shū)
- 2025年電子用高純氣體項(xiàng)目發(fā)展計(jì)劃
- 2025年納迪克酸酐項(xiàng)目發(fā)展計(jì)劃
- 2025年湖南省國(guó)家綜合性消防救援隊(duì)伍消防員招錄考試試題【答案】
- 自我生長(zhǎng)構(gòu)建邏輯連貫的學(xué)習(xí)過(guò)程
- 繪本閱讀對(duì)重度智力障礙兒童溝通行為影響的深度探究
- 2025年全國(guó)精準(zhǔn)扶貧知識(shí)競(jìng)賽考試試題(100題)【答案】
- 2025年漁業(yè)捕撈養(yǎng)殖機(jī)械項(xiàng)目發(fā)展計(jì)劃
- 歌頌祖國(guó)演講稿范文4篇
- 礦區(qū)無(wú)計(jì)劃停電應(yīng)急預(yù)案
- GA/T 1556-2019道路交通執(zhí)法人體血液采集技術(shù)規(guī)范
- GA 533-2005擋煙垂壁
- 成品保護(hù)專(zhuān)題課件
- 復(fù)習(xí)課專(zhuān)題講座課件
- 提高人工氣道氣囊管理正確率品管圈匯報(bào)書(shū)模板課件
- 2023年景德鎮(zhèn)藝術(shù)職業(yè)大學(xué)輔導(dǎo)員招聘考試筆試題庫(kù)及答案解析
- 信號(hào)與系統(tǒng)思維導(dǎo)圖(所有內(nèi)容)
- 藥物外滲嚴(yán)重后果以及處理
- 國(guó)家職業(yè)教育老年服務(wù)與管理專(zhuān)業(yè)教學(xué)資源庫(kù)
- 長(zhǎng)郡澄池杯復(fù)賽試題及解析
- 機(jī)電安裝安全監(jiān)理實(shí)施細(xì)則
評(píng)論
0/150
提交評(píng)論