linux创建静态库

[1]新建源程序staticlib.c

 1 /*************************************************************************
 2     > File Name: staticlib.c
 3     > Author: copener
 4     > Mail: [email protected]
 5     > Created Time: 2015年05月13日 星期三 17时08分11秒
 6  ************************************************************************/
 7
 8 /*sum*/
 9 int add(unsigned int a, unsigned int b){
10     return (a+b);
11 }
12
13 /*sub*/
14 int sub(unsigned int a, unsigned int b){
15     return (a-b);
16 }
17
18
19 /*mul*/
20 int mul(unsigned int a, unsigned int b){
21     return (a*b);
22 }
23
24 /*div*/
25 int div(unsigned int a, unsigned int b){
26     return (a/b);
27 }

[2]编译但不链接源码staticlib.c 生成staticlib.o  

1 [email protected]:~/workspace/test/staticlib$ ls
2 staticlib.c
3 [email protected]:~/workspace/test/staticlib$ gcc -c staticlib.c
4 [email protected]:~/workspace/test/staticlib$ ls
5 staticlib.c  staticlib.o

[3]生成静态库文件staticlib.a

1 //注:r表示加入,若库不存在则用c参数创建,s表示把添加的内容更新到库文件
2 [email protected]:~/workspace/test/staticlib$ ar rcs staticlib.a staticlib.o
3 [email protected]:~/workspace/test/staticlib$ ls
4 staticlib.a  staticlib.c  staticlib.o

[4]添加staticlib.h的头文件引用

 1 /*************************************************************************
 2     > File Name: staticlib.h
 3     > Author: copener
 4     > Mail: [email protected]
 5     > Created Time: 2015年05月13日 星期三 17时10分42秒
 6  ************************************************************************/
 7
 8 extern int add(unsigned int a, unsigned int b);
 9 extern int sub(unsigned int a, unsigned int b);
10 extern int mul(unsigned int a, unsigned int b);
11 extern int div(unsigned int a, unsigned int b);

[5]新建程序testapp.c调用静态库函数测试

 1 /*************************************************************************
 2     > File Name: testapp.c
 3     > Author: copener
 4     > Mail: [email protected]
 5     > Created Time: 2015年05月13日 星期三 17时15分47秒
 6  ************************************************************************/
 7
 8 #include<stdio.h>
 9 #include"staticlib.h"    /*包含库函数接口*/
10
11 int main(void){
12     unsigned int a,b;
13     printf("please input a and b:\r\n");
14     scanf("%d%d",&a,&b);
15
16     printf("#########################################\r\n");
17     printf("#add    :%d\r\n",add(a,b));
18     printf("#sub    :%d\r\n",sub(a,b));
19     printf("#mul    :%d\r\n",mul(a,b));
20     printf("#div    :%d\r\n",div(a,b));
21     printf("#########################################\r\n");
22
23     return 0;
24 }

[6]编译测试源码链接静态staticlib.a,生成testapp可执行程序

1 [email protected]:~/workspace/test/staticlib$ gcc -c testapp.c -o testapp.o
2 [email protected]:~/workspace/test/staticlib$ ls
3 staticlib.a  staticlib.c  staticlib.h  staticlib.o  testapp.c  testapp.o
4 [email protected]:~/workspace/test/staticlib$ gcc testapp.o ./staticlib.a -o testapp
5 [email protected]:~/workspace/test/staticlib$ ls
6 staticlib.a  staticlib.c  staticlib.h  staticlib.o  testapp  testapp.c  testapp.o

[7]测试运行testapp

 1 [email protected]:~/workspace/test/staticlib$ ./testapp
 2 please input a and b:
 3 33
 4 23
 5 #########################################
 6 #add    :56
 7 #sub    :10
 8 #mul    :759
 9 #div    :1
10 #########################################

[8]小结:库写好后,只要提供staticlib.a库和staticlib.h函数头文件给使用都即可。链接库在编译程序时要放在被编译的源码文件之后,否则可能会链接失败。

时间: 2024-11-17 09:32:09

linux创建静态库的相关文章

Linux 创建静态库以及静态库的使用

目录: 1 手动建立静态库 2 静态库的使用 3 通过makefile文件建立静态库 1 手动建立静态库 将建立一个简单的静态库 -1: 将所需的源文件编译成目标文件 ------ helpguy.h #ifndef __helpguy_h__ #define __helpguy_h__ #include <stdlib.h> #include <stdio.h> #include <unistd.h> void err_msg(const char* errMsg,

zt:我使用过的Linux命令之ar - 创建静态库.a文件

我使用过的Linux命令之ar - 创建静态库.a文件 本文链接:http://codingstandards.iteye.com/blog/1142358    (转载请注明出处) 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到.关于Linux下的库文件.静态库.动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料[3]<关于Linux静态库和动态库的分析>. 常用参数 格式

在Linux中创建静态库.a和动态库.so

转自:http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用函数制作成函数库,供其它程序使用. 函数库分为静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译

【转载】我使用过的Linux命令之ar - 创建静态库.a文件

本文链接:http://codingstandards.iteye.com/blog/1142358 (转载请注明出处) 用途说明创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚 本中用到.关于Linux下的库文件.静态库.动态库以及怎样创建和使用等相关知识,参见本文后面的相关资料[3]<关于Linux静态库和动态库的分析>. 常用参数格式:ar rcs libxxx.a xx1.o xx2.o参数r:在

Linux使用静态库和动态库

Linux使用静态库和动态库 (一)库的概念 库是可以复用的代码,在一些大的项目中常常会用到库. 本质上说:库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 一般说库是说两种: 静态库:linux下.a文件.windows下.lib文件 动态库:linux下.so文件.windows下.dll文件 最近花了一些时间把linux下编译.链接等研究了一下,作为一个菜鸟记录并分享一蛤. (二)静态库与动态库 程序的编译运行要经过以下步骤: 1.源文件(.h .cpp等) 2.预编译 3.编

Linux下静态库和动态库的制作与使用

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Times New Roman", serif } h2 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.0pt; margin-left: 28.8pt;

Linux下静态库生成和使用

Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. 2.标准系统库可在目录/usr/lib与/lib中找到.比如,在类Unix系统中C语言的数序库一般存储为文件/usr/lib/libm.a.该库中函数的原型声明在头文件/usr/include/math.h中. 3.C标准库本身存储为/usr/lib/libc.a,它包含ANS1/ISO标准指定的函

转载《Xcode 创建静态库和动态库》

Xcode 创建静态库和动态库 地址链接   http://www.cocoachina.com/ios/20150921/13385.html 1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去

Linux上静态库和动态库的编译和使用

linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只有运行时找不到对应动态库才会报错 gcc创建和使用静态库.动态库 gcc动态链接库*.so文件的生成与使用方法 原文地址:https://www.cnblogs.com/gdut-gordon/p/10390532.html