本文摘自网络,如有侵犯,请联系删除!
首先使用建立三个文件:hello.h,hello.c,main.c
hello.h
#ifndef __HELLO_H__ #define __HELLO_H__ #ifdef __cplusplus extern "C"{ #endif void hello(const char *name); #ifdef __cplusplus } #endif #endif /* __HELLO_H__ */
hello.c
#include <stdio.h> void hello(const char *name) { printf("Hello, %s!\n", name); }
main.c
#include "hello.h" int main(int argc, char *argv[]) { argc = argc; argv = argv; hello("World"); return 0; }
一、静态库的生成及使用
1、编译成库文件:
# gcc -c hello.c # ar crv libmyhello.a hello.o
注意:由于库文件以"lib"为前缀,然后紧跟库文件名,再以".a"为扩展名。
2、静态库的使用。
例如在main.c中需要使用myhello.a静态库中的hello函数,则(1)在main.c中将hello函数原型声明引入main.c,然后编译时连接静态库:
# gcc main.c -L. -lmyhello -o main
二、动态库的生成与使用
1、编译成库文件
# gcc -c -fPIC hello.c # gcc -shared -fPIC -o libmyhello.so hello.o
注意:
1、动态库文件命名跟静态库类似,但扩展名为".so";
2、编译成目标文件时需要加-fPIC选项。
2、动态库的使用
动态库的使用在源文件中引用时与静态库无异,仅编译参数不同,另外动态库需要在usr/lib、/lib目录下存放该库文件,即(libmyhello.so)。
注意:若动态库与静态库同时存在时,优先使用动态库。