Linux下创建、查看、提取和修改静态库(*.a)
先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件)。
废话少说,下面直接进入主题。
1.创建两个c文件:addition.c 和 multiplication.c
addition.c
//addition.c
int addition (int a ,int b)
{
int result;
result=a+b;
return result;
}
multiplication.c
//multiplication.c
int multiplication
{
int result;
result=a*b;
return result;
}
2.编译C文件得到.o目标文件
$ gcc -c addition.c
$ gcc -c multiplication.c
其中选项 -c 是让gcc只把源码编译成.o文件。
接着在当前文件夹中就会发现多处了两个.o文件
$ ls
addition.c multiplication.c addition.o multiplication.o
3. 用ar命令来创建静态库文件
$ ar cr libarith.a addition.o multiplication.o
其中cr就是create的意思,这样就创建了一个libarith.a的静态库文件。
4.写一个c程序来调用libarith.a库
在使用库文件之前要先建立一个头文件 header.h,它包含了库文件中实现了函数的声明。
//header.h
#include<stdio.h>
int addition(int a,int b);
int multiplication(int a,int b);
然后创建一个c程序example.c来调用函数
// example.c
#include "header.h"
int main()
{
int result;
result=addition(,);
printf("addition result is :%d\n",result);
result=multiplition(,);
printf("multiplication result is:%d\n",result);
return ;
}
编译example.c
$ gcc example.c libarith.a -o example
选项 -o 后面的参数是指定编译器生成的可执行文件名,如果没有加 -o的话默认生成的可执行文件名是 a.out
运行可以行文件example
$./example
addtion result is:
multiplication result is:
5.查看库文件中的目标文件
$ ar t libarith.a
addition.o
multiplition.o
如果想查看库文件中包含了哪些函数可以用 nm libarith.a 查看,如果要查看可执行文件需要调用哪些库可以用 lld example 来查看。
6.从库文件中提取目标文件
$ mkdir file
$ cp libarith.a file/
$ cd file
$ ar x libarith.a
$ ls
addition.o
multiplition.o
7.添加一个目标文件到库文件中
假设你已经有一个目标文件subtraction.o
$ ar r libarith.a subtraction.o
$ ar t libarith.a
addition.o
multiplication.o
subtraction.o
如果库文件中已经存在了subtraction.o文件,则会用新的来覆盖原来旧的。
8.删除库文件中指定的目标文件
$ ar d libarith.a addition.o
$ ar t libarith.a
multiplication.o
subtraction.o
参考来源:http://www.thegeekstuff.com/2010/08/ar-command-examples/
Linux下创建、查看、提取和修改静态库(*.a)的更多相关文章
- linux下的C语言开发(静态库/动态库)
动态链接库不是Linux独有的特性,在windows下面也存在这样的特性.一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的.和静态链接库 ...
- linux下创建和删除软、硬链接
linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...
- linux下如何查看mysql、apache是否安装,并卸载
--linux下如何查看mysql.apache是否安装,并卸载? http://blog.163.com/dengxiuhua126@126/blog/static/1186077720137311 ...
- Linux 下实时查看日志
Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...
- linux下如何查看多核负载情况【转】
最近服务器负载超荷,CPU的单个荷使用率到了百分之八九十,内存占用超大,让给检测性能,不给源码,只给一个+ -g编译生成的执行文件,Fuck!!! 1, 在linux下载了valgrind,使用val ...
- Linux下创建和删除用户
在Linux下创建用户和删除用户,必须在root用户下,如果你当前不是用根用户登录,你可以打开终端,输入"su root"命令,再输入根口令,就可以进入root用户模式下,如下所示 ...
- linux下创建用户
linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
- linux下创建用户并且限定用户主目录
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号 一方面可以帮助系统管理员对使用系统的用户进 ...
- 【搬运工】linux下创建用户(一)
转载:http://www.cnblogs.com/ylan2009/articles/2321177.html linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个 ...
随机推荐
- 《UNIX网络编程》之多客户连接服务端,可重用套接字对
该网络编程之客户端与服务端程序模板支持: 1. 多客户端同时连接服务端,即服务程序可以同时为多个客户端服务: 2. 服务端支持套接字对重用,即即使处于TIME_WAIT状态,仍可支持服务端重启: 3. ...
- Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容
Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/ public class WhiteSpaceFilter : Stream { privat ...
- [AngularJS 2 实践 一]My First Angular App
最近一直在看关于AngularJS 2的资料,查看了网上和官网很多资料,接下来就根据官网教程步骤一步步搭建我的第一个Angular App AngularJS 2说明请参考:http://cnodej ...
- Android - Service启动机制
以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luoshe ...
- 使用nice命令调整进程优先级
Adjusting Process Priority with nice When Linux processes are started, they are started with a spe ...
- webform repeater
repeater:由模板构成,解析后模板就不存在了 需要指定数据源进行数据绑定 List<Fruit> list = new FruitDA().Select(); ...
- ASP.NET-FineUI开发实践-4(二)
在网上找了找,实验了一下window弹出和关闭的动画效果分享一下. 接上次的代码 default.js window_tips.animCollapse= true;//打开动画效果 window_t ...
- pen: Local Testing
[踩点] * OLEViewer:查看 ActiveX 组件信息 [Fuzz] * Tools in This Article * COMRaider:ActiveX/ocx [utils] * Fi ...
- new关键字在虚方法的动态调用中的阻断作用
关于new关键字在虚方法动态调用中的阻断作用,也有了更明确的理论基础.在子类方法中,如果标记 new 关键字,则意味着隐藏基类实现,其实就是创建了与父类同名的另一个方法,在编译中这两个方法处于动态方法 ...
- keepalived + nginx
本文主要介绍keepalived的安装,Nginx自行解决,也可以使用httpd.随便任何服务都可以... keepalived 官网http://www.keepalived.org/index.h ...