创建静态库和动态库
来源:互联网 发布:淘宝怎么隐藏待收货 编辑:程序博客网 时间:2024/06/03 18:47
今天是2014年5月25日。
首先我想说一下在LINUX操作系统中,如何查看进程和查看进程树。要想查看进程只需敲入ps -aux 即可,也可用 top指令,至于它俩的具体区别后面在介绍。用pstree 来查看进程树。这里面有子进程和父进程,一定要会看。
下来教你如何导出内核信息,和查看映像。基于刚才的ps -aux 确定你想要查看的进程(其实是它的PID)。然后用 cd /proc 导出内核信息,在 cd/PID 之后 ls 查看存放进程信息,在用cat maps 查看映像。这样你就可以清楚的看到每个变量和函数的一些存放位置了。
当你写好一段代码后,也许它有很多的 .c源文件。这时候我们就可以创建一个库来存放它。那么接下来我说说如何创建静态库和动态库:
1>如何创建一个静态库:
首先我们执行 gcc -c *.c (这里的*.c是指所有的.c源程序),之后会生成 .o文件。然后用 ar -rs libname.a *.o (这里ar -rs 是创建静态库指令,lib是库标识,name是静态库的名字可以自定义, .a是静态库的后缀名)生成静态库后在用 gcc .c -L . -lname (-L.是指在当前路径下找,若找不到则去 /urs/lib下去) 之后再 ./a.out 这样也可以得出正确的结果。
当然我们也可以把建立好 静态库移到 / urs/bin (mv libname.a /usr/bin )即可,然后用gcc .c -lname 之后再 ./a.out 也同样可以。
2>如何创建一个动态库
首先我们执行 gcc -c -fPIC *.c (-fPIC 表示与路径无关的(内存中)) (这里的*.c是指所有的.c源程序),之后会生成 .o文件。然后用 gcc -shared -o libname.so *.o (-L.是指在当前路径下找,若找不到则去 /urs/lib下去) (这里-shared 是创建动态库指令,lib是库标识,name是动态库的名字可以自定义, .so是动态库的后缀名)生成动态库后必须要把动态库移到 /usr/bin 下,否则在执行编译时无法链接,即找不到位置和内容。移到 /usr/lib 下之后在用 gcc .c -lname 之后再 ./a.out 这样也可以得出正确的结果。
下了我着重讲讲静态库和动态库的区别:首先,可以肯定的是静态库浪费空间,动态库浪费时间。静态库在程序编译时会被链接(拷贝)到目标代码中,程序运行时将不在需要该静态库。但是当动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入(指针),因此在程序运行时还需要动态库的存在。
无论静态库还是动态库都是由 .o文件创建的,当静态库和动态库同名时,gcc 命令优先选择动态库。
- Linux创建静态库和动态库
- 静态库 动态库创建和链接
- Linux创建静态库和动态库
- Linux创建静态库和动态库
- 静态库和动态库的创建
- Linux创建静态库和动态库
- Linux创建静态库和动态库
- gcc 创建静态库和动态库
- 创建静态库和动态库(总结)
- 创建静态库和动态库
- 创建静态库和动态库
- 动态库和静态库的创建
- xcode 创建静态库和动态库
- 静态库和动态库创建过程
- linux创建静态库和动态库
- Xcode 创建静态库和动态库
- Linux创建动态库和静态库
- 动态库和静态库的创建
- Swfupload 技术文档和中文API
- 第十三周周报
- spring 配置文件的路径
- 黑马程序员学习笔记_OC之给NSString增加分类
- Using the AngularJS Package for Sublime Text
- 创建静态库和动态库
- Redfield.Perfectum.v2.01汉化绿色破解版
- OCP 1Z0 051 118
- DTVRD记探毒宗德壳何堆
- openwrt 启动流程
- 中俄将共同纪念反法西斯战争胜利70周年
- 在JSP中对select和textarea读取、赋值的实例
- c++引用计数外置方式模板实现
- ZOJ-2737