欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

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

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

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

//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; 
} 

接下來(lái)準(zhǔn)備一個(gè)測(cè)試用的主函數(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)庫(kù)并使用

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

ar crv libmyAPI.a myAPI.o 

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

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

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

./output 

2.生成動(dòng)態(tài)庫(kù)并使用

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

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

生成的動(dòng)態(tài)庫(kù)在編譯時(shí)需要聲明,運(yùn)行時(shí)需要被依賴(lài)。聲明如下

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

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

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

./output 

以上這篇Linux下g++編譯與使用靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有