在Linux環境下編寫和使用靜態函式庫

2021-04-29 15:31:49 字數 2391 閱讀 1931

libsth.h

中宣告函式定義: /*

* libsth.h

* declarations for ****** error-handling library */

#ifndef _libsth_h

#define _libsth_h

#include "stdarg.h"

/* * add */

int add(int a, int b);

/* * substract */

int substract(int a, int b);

/* * times */

int times(int a, int b);

/* * divide */

float divide(int a, int b);

#endif

在libsth.c

中實現libsth.h

中定義的函式: /*

* libsth.c

* implementation of the functions defined in libsth.h */

#include "stdarg.h"

#include "stdlib.h"

#include "stdio.h"

#include "string.h"

#include "libsth.h"

int add(int a, int b)

int substract(int a, int b)

int times(int a, int b)

float divide(int a, int b)

在teststh.c

中使用函式庫(

libsth.a

)中的函式 /*

* teststh.c

* testing program for libsth library */

#include "stdio.h"

#include "stdlib.h"

#include "libsth.h"

#include "iostream.h"

int main(void)

下面是c++版的

makefile:

teststh:teststh.o

g++ teststh.o -static -l. -lsth -l/usr/lib/gcc-lib/i386-redhat-linux/3.2.3 -lstdc++ -o teststh

teststh.o:teststh.c

g++ -c teststh.c -wno-deprecated -o teststh.o

libsth.a:libsth.o

ar rcs libsth.a libsth.o

libsth.o:libsth.c libsth.h

g++ -c libsth.c -o libsth.o

all:libsth.a teststh

clean:

rm -f *.o *.a teststh

說明: 1、

-l. -lsth -l/usr/lib/gcc-lib/i386-redhat-linux/3.2.3 -lstdc++

顯示地使用了兩個靜態庫,即

libsth.a

和libstdc++.a

,因為使用

g++ -static

編譯時它不會自動搜尋到這個庫,因此必須用

–l選項顯式指定; 2

、-wno-deprecated

是為了遮蔽在用

g++ make

程式時產生的一些警告資訊,這些警告資訊認為「

iostream.h

」中所定義的某些函式是過時的,但是還可以用; 3

、ar rcs libsth.a libsth.o

是使用ar

命令的rcs

選項將libsth.o

打包成libsth.a

下面是c

版的makefile:

teststh:teststh.o

gcc teststh.o -static -l. -lsth -o teststh

teststh.o:teststh.c libsth.h

gcc -c teststh.c -o teststh.o

libsth.a:libsth.o

ar rcs libsth.a libsth.o

libsth.o:libsth.c libsth.h

g++ -c libsth.c -o libsth.o

all:libsth.a teststh

clean:

rm -f *.o *.a teststh

在Linux環境下編寫和使用靜態函式庫

在libsth.h中宣告函式定義 libsth.h declarations for error handling library ifndef libsth h define libsth h include stdarg.h add int add int a,int b substract i...

在linux環境下使用別名 alias

1.平時在unix環境中經常需要使用某些命令,比如進入某些很深的路徑,會用到類似於cd home cce jboss server default deploy bme.war web inf conf這樣的命令 可以用乙個別名 alias 來代替這個命令 2.vi命令編輯根目錄下的.cshrc檔案...

在Linux下編寫php擴充套件

或者在學習中有什麼問題歡迎交流 2.進入原始碼目錄中的ext目錄中 3.執行.ext skel extname myext 這是擴充套件的名字 生成擴充套件框架 ps 如果ext skel無法執行,請檢視ext skel檔案是否有可執行許可權 4.編寫擴充套件函式 a 我們開啟myext.c檔案,裡...