linux怎么调用静态库,Linux 静态库的创建和使用
簡(jiǎn)介
在linux下庫分兩種:靜態(tài)庫和共享(動(dòng)態(tài))庫。這兩種庫的主要不同在于連接到程序的過程。
在編譯程序時(shí),連接器(ld)負(fù)責(zé)把程序中不同的模塊連接起來,產(chǎn)生最終的可執(zhí)行文件。靜態(tài)庫就是在這一過程連接到程序,成為程序的一部分。共享庫與此不同,在編譯時(shí)加入程序的只是一些鉤子,在程序運(yùn)行的時(shí)候才需要把共享庫調(diào)入以便運(yùn)行。
創(chuàng)建和使用靜態(tài)庫
創(chuàng)建靜態(tài)庫:通常使用ar程序把一些目標(biāo)文件(.o)組合在一起,成為一個(gè)單獨(dú)的庫,然后運(yùn)行ranlib,以給庫加入一些索引信息。
在本節(jié)使用如下的代碼完成一個(gè)基本hello wold程序:
say_hello.h
#ifndef _SAY_HELLO_
#define _SAY_HELLO_
void say_hello ();
#endif
say_hello.cpp
#include "say_hello.h"
#include
using std::cout;
void say_hello ()
{
cout << "hello ";
}
say_wolrd.h
#ifndef _SAY_WORLD_
#define _SAY_WORLD_
void say_world ();
#endif
say_world.cpp
#include
#include "say_world.h"
using std::cout;
using std::endl;
void say_world ()
{
cout << "world" << endl;
}
main.cpp
#include "say_hello.h"
#include "say_world.h"
int main ()
{
say_hello ();
say_world ();
}
生成庫和使用庫的步驟如下:
使用g++ -c生成目標(biāo)文件(.o)
g++ -c -o say_hello.o say_hello.cpp
g++ -c -o say_world.o say_world.cpp
使用ar rc歸檔為庫文件
ar rc libhelloworld.a say_hello.o say_world.o
使用ranlib生成索引
ranlib libhelloworld.a
使用庫
g++ -o main main.cpp -L. -lhelloworld
-L. 告訴連接器在當(dāng)前目錄查找?guī)煳募?#xff1b;-l 選項(xiàng)指定連接的庫,這里省略前綴lib和文件名后綴.a
總結(jié)
以上是生活随笔為你收集整理的linux怎么调用静态库,Linux 静态库的创建和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux c 如何编译静态库,Linu
- 下一篇: linux 鬼精灵漏洞,鬼精灵Grinc