最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux下g++編譯與使用靜態(tài)庫和動態(tài)庫的方法

 更新時間:2017年05月22日 10:59:00   投稿:jingxian  
下面小編就為大家?guī)硪黄狶inux下g++編譯與使用靜態(tài)庫和動態(tài)庫的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在windows環(huán)境下,我們通常在IDE如VS的工程中開發(fā)C++項目,對于生成和使用靜態(tài)庫(*.lib)與動態(tài)庫(*.dll)可能都已經(jīng)比較熟悉,但是,在linux環(huán)境下,則是另一套模式,對應(yīng)的靜態(tài)庫(*.a)與動態(tài)庫(*.so)的生成與使用方式是不同的。剛開始可能會不適應(yīng),但是用多了應(yīng)該會習(xí)慣這種使用,因為步驟上并沒有VS下配置那么繁瑣。

下面就分別總結(jié)下linux下生成并使用靜態(tài)庫與動態(tài)庫的方法:(由于是C++項目,所以編譯器用的g++,但是與gcc的使用是相通的)

首先是準(zhǔn)備工作,把我們需要封裝成庫文件的函數(shù)的頭文件與源文件寫好,如下:

//myAPI.h 
int ADD(int a, int b); 
int MINUS(int a, int b); 
//myAPI.cpp 
#include "myAPI.h" 
 
int ADD(int a, int b){ 
  return a + b; 
} 
 
int MINUS(int a, int b){ 
  return a - b; 
} 

接下來準(zhǔn)備一個測試用的主函數(shù)源文件:

//main.cpp 
#include "myAPI.h" 
#include <iostream> 
 
int main(){ 
  std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; 
  std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; 
  return 0; 
} 

最后,先編譯我們的 myAPI.cpp 文件生成 myAPI.o 目標(biāo)文件

g++ -c myAPI.cpp 

1.生成靜態(tài)庫并使用

Linux下用生成靜態(tài)庫的命令 ar 處理 myAPI.o 文件生成靜態(tài)庫文件,生成的庫文件應(yīng)遵循規(guī)范,及l(fā)inux下庫文件加“l(fā)ib”前綴。所以針對本例,通過如下一條命令即可生成 libmyAPI.a 靜態(tài)庫:

ar crv libmyAPI.a myAPI.o 

接下來即可在項目編譯過程中利用靜態(tài)庫了,此時 myAPI.cpp 這個庫函數(shù)的定義文件已經(jīng)不需要了。main.cpp 編譯命令如下(注意,依賴的靜態(tài)庫文件要放在被依賴項后面):

g++ main.cpp libmyAPI.a -o output 

編譯通過后即可運行可執(zhí)行文件 output , 此時 libmyAPI.a 也已經(jīng)是不需要的了。執(zhí)行命令并輸出結(jié)果如下:

./output 

2.生成動態(tài)庫并使用

linux下編譯時通過 -shared 參數(shù)可以生成動態(tài)庫(.so)文件,如下

g++ -shared -fPIC -o libmyAPI.so myAPI.o 

生成的動態(tài)庫在編譯時需要聲明,運行時需要被依賴。聲明如下

g++ main.cpp -L. -lmyAPI -o output  

”-L.”標(biāo)記告訴G++函數(shù)庫可能位于當(dāng)前目錄;使用”-lmyAPI”標(biāo)記來告訴G++驅(qū)動程序在連接階段引用共享函數(shù)庫libmyAPI.so。

使用時如果提示如下錯誤,則將 libmyAPI.so 移到 /usr/lib 目錄下即可:

./output 

以上這篇Linux下g++編譯與使用靜態(tài)庫和動態(tài)庫的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C++?指針與二維數(shù)組名

    詳解C++?指針與二維數(shù)組名

    和一維數(shù)組類似,C++?將二維數(shù)組名解釋為其第一個元素的地址,而二維數(shù)組的第一個元素為一維數(shù)組,下面詳細總結(jié)下二維數(shù)組名的性質(zhì),需要的朋友可以參考下
    2022-09-09
  • 關(guān)于C++內(nèi)部類的介紹與使用示例

    關(guān)于C++內(nèi)部類的介紹與使用示例

    今天小編就為大家分享一篇關(guān)于關(guān)于C++內(nèi)部類的介紹與使用示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標(biāo)的方法

    vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標(biāo)的方法

    這篇文章主要介紹了vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標(biāo),下面介紹了一個示例,將參數(shù)first_arg, second-arg和third arg傳遞給程序(此處需要注意,third arg中間雖然存在空格,但是仍然被視作一個參數(shù)),需要的朋友參考下吧
    2024-03-03
  • C/C++詳解實現(xiàn)二層轉(zhuǎn)發(fā)

    C/C++詳解實現(xiàn)二層轉(zhuǎn)發(fā)

    數(shù)據(jù)鏈路層是開放系統(tǒng)互連 (OSI) 模型中的第二層,該層用于通過 LAN 等單一網(wǎng)絡(luò)進行通信的節(jié)點,第二層數(shù)據(jù)包不能從一個網(wǎng)絡(luò)傳輸?shù)搅硪粋€網(wǎng)絡(luò)。而二層轉(zhuǎn)發(fā)是根據(jù)報文的目的MAC直接進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)過程中不用對報文的頭部做任何的修改
    2022-05-05
  • C語言如何計算兩個數(shù)的最小公倍數(shù)

    C語言如何計算兩個數(shù)的最小公倍數(shù)

    這篇文章主要介紹了C語言如何計算兩個數(shù)的最小公倍數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • linux之a(chǎn)wk命令的用法

    linux之a(chǎn)wk命令的用法

    awk是一個非常棒的數(shù)字處理工具。相比于sed常常作用于一整行的處理,awk則比較傾向于將一行分為數(shù)個“字段”來處理。運行效率高,而且代碼簡單,對格式化的文本處理能力超強
    2013-10-10
  • 淺析C語言中的數(shù)組及字符數(shù)組

    淺析C語言中的數(shù)組及字符數(shù)組

    這篇文章主要介紹了C語言中的數(shù)組及字符數(shù)組,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • C語言的分支和循環(huán)語句你了解嗎

    C語言的分支和循環(huán)語句你了解嗎

    這篇文章主要為大家詳細介紹了C語言的分支和循環(huán)語句,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Qt中QPushButton組件的使用詳解

    Qt中QPushButton組件的使用詳解

    QPushButton是Qt庫中的一個重要組件,本文主要介紹了Qt中QPushButton組件的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • C++的cout.tellp()和cout.seekp()語法介紹

    C++的cout.tellp()和cout.seekp()語法介紹

    無論是使用 cout 輸出普通數(shù)據(jù),用 cout.put() 輸出指定字符,還是用 cout.write() 輸出指定字符串,數(shù)據(jù)都會先放到輸出流緩沖區(qū),待緩沖區(qū)刷新,數(shù)據(jù)才會輸出到指定位置,本文給大家介紹一下C++的cout.tellp()和cout.seekp()語法,需要的朋友可以參考下
    2023-09-09

最新評論

潼南县| 濮阳市| 胶州市| 察隅县| 都兰县| 任丘市| 故城县| 乌拉特后旗| 金堂县| 望城县| 许昌县| 龙泉市| 原平市| 辽源市| 张家港市| 武鸣县| 栾川县| 香河县| 华亭县| 冕宁县| 肃南| 千阳县| 城口县| 桐柏县| 桓仁| 丁青县| 茶陵县| 中卫市| 揭东县| 镇赉县| 宁陵县| 墨竹工卡县| 长寿区| 澎湖县| 汝城县| 宁河县| 民权县| 荥经县| 武强县| 黄山市| 满城县|