歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux 靜態庫的創建和使用

簡介

在linux下庫分兩種:靜態庫和共享(動態)庫。這兩種庫的主要不同在於連接到程序的過程。

在編譯程序時,連接器(ld)負責把程序中不同的模塊連接起來,產生最終的可執行文件。靜態庫就是在這一過程連接到程序,成為程序的一部分。共享庫與此不同,在編譯時加入程序的只是一些鉤子,在程序運行的時候才需要把共享庫調入以便運行。

創建和使用靜態庫
創建靜態庫:通常使用ar程序把一些目標文件(.o)組合在一起,成為一個單獨的庫,然後運行ranlib,以給庫加入一些索引信息。

在本節使用如下的代碼完成一個基本hello wold程序:

say_hello.h

#ifndef _SAY_HELLO_
#define _SAY_HELLO_

void say_hello ();

#endif

 

say_hello.cpp

#include "say_hello.h"
#include <iostream>

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 <iostream>
#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生成目標文件(.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. 告訴連接器在當前目錄查找庫文件;-l 選項指定連接的庫,這裡省略前綴lib和文件名後綴.a

相關鏈接:Linux 動態庫的創建和使用 http://www.linuxidc.com/Linux/2013-03/81084.htm

Copyright © Linux教程網 All Rights Reserved