linux下动态库与静态库
2009-12-25 10:23
253 查看
体验一下linux下编写和使用动态库与静态库,范例:helloworld程序。
首先编写静态库:
hellos.h
hellos.c
开始编译成静态库:
gcc -c -o hellos.o hellos.c
ar cqs libhellos.a hellos.o
main.c
使用静态库编译:gcc -o hello main.c -static -L. -lhellos
然后运行hello,输出:
print in static way: Hello World!
删除
libhellos.a和
hellos.*后, 程序仍然正常运行。
编写动态库
:
hellod.h
hellod.c
编译生成动态库:gcc -shared -o libhellod.so hellod.c
这样,libhellod.so就是生成的动态库。
export LD_LIBRARY_PATH=/root/program/link/dynamic/:$LD_LIBRARY_PATH,指定库文件路径。
如果系统装了SELINUX的话,要执行chcon -t textrel_shlib_t /root/program/link/dynamic/libhellod.so改变权限。
main.c
gcc -o hello main.c -L./ -lhellod
然后运行hello可以看到输出
print in dynamic way: Hello World!
如果删除库文件,会出现:./hello: error while loading shared libraries: libhellod.so: cannot open shared object file: No such file or directory
首先编写静态库:
hellos.h
#ifndef _HELLO_S_H #define _HELLO_S_H void prints(char *str); #endif
hellos.c
#include "hellos.h" #include <stdio.h> void prints(char *str) { printf("print in static way:%s",str); }
开始编译成静态库:
gcc -c -o hellos.o hellos.c
ar cqs libhellos.a hellos.o
main.c
#include "hellos.h" int main(void) { char *text = "hello,world/n"; prints(text); }
使用静态库编译:gcc -o hello main.c -static -L. -lhellos
然后运行hello,输出:
print in static way: Hello World!
删除
libhellos.a和
hellos.*后, 程序仍然正常运行。
编写动态库
:
hellod.h
#ifndef _HELLO_D_H #define _HELLO_D_H void printd(char *str); #endif
hellod.c
#include "hellod.h" #include <stdio.h> void printd(char *str) { printf("print in dynamic way:%s",str); }
编译生成动态库:gcc -shared -o libhellod.so hellod.c
这样,libhellod.so就是生成的动态库。
export LD_LIBRARY_PATH=/root/program/link/dynamic/:$LD_LIBRARY_PATH,指定库文件路径。
如果系统装了SELINUX的话,要执行chcon -t textrel_shlib_t /root/program/link/dynamic/libhellod.so改变权限。
main.c
#include "hellod.h" int main(void) { char *text = "hello,world/n"; printd(text); }
gcc -o hello main.c -L./ -lhellod
然后运行hello可以看到输出
print in dynamic way: Hello World!
如果删除库文件,会出现:./hello: error while loading shared libraries: libhellod.so: cannot open shared object file: No such file or directory
相关文章推荐
- gcc g++ Linux下动态库_静态库
- Linux下GCC生成和使用静态库和动态库详解(二)
- linux 动态库和静态库
- 静态库and动态库区别(Linux)
- Linux下Gcc生成和使用静态库和动态库详解(转)
- linux下生成静态库和动态库
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 技巧:Linux 动态库与静态库制作及使用详解
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- linux库及静态库及动态库的创建
- Linux链接,静态库和动态库
- linux下的动态库和静态库
- 举例分析Linux动态库和静态库
- Linux编译静态库和动态库的方法
- Linux中的静态库和动态库简介及生成过程示例
- linux下编程动态库和静态库编译使用
- Linux下Gcc生成和使用静态库和动态库详解(转)
- 在Linux中创建静态库和动态库
- linux下生成静态库和动态库
- Linux 静态库与动态库搜索路径设置详解【转】