Linux初步编程—创建静态函数库

  当我们在编写程序需要调用库函数时,要在程序代码中添加包含库函数声明的头文件,编译器和链接器会根据头文件将我们编写的程序代码与库函数所在的库文件连接起来,生成可执行文件。

  最简单的函数库可以看成是一些目标文件的“集合”。

  0.创建两个函数源文件

1 #include <stdio.h>
2
3 void text1(int a)
4 {
5     printf("%d",a);
6 }

1 #include <stdio.h>
2
3 void text2(char *str)
4 {
5
6       printf("%s",str);
7 }

  1.分别将两个函数源文件编译成目标文件。

gcc -c text1.c text2.c

.

  2.创建包含两个函数声明的头文件

  

1 /* This is lib.h. It declares two functions
2 */
3
4 void text1(int );
5 void text2(char *);

  3.编写测试程序,程序调用两个测试函数

1 #include <stdio.h>
2 #include "lib.h"
3
4 int main()
5 {
6       text1(1)‘
7       text2("hello world\n")
8
9 }

  4.编译成目标文件,显式链接调用函数的目标文件

gcc -o text.o -c text.c
gcc -o text text.o text1.o text2.o
./text

  5.将生成的两个函数目标文件集合在一起生成函数库

  

ar crv libtext.a text1.o text2.o

  6.为函数库生成内容表

ranlib libtext.a

  7.对测试程序文件进行显示链接函数库生成可执行文件(否则编译器会到标准c库去查找进行链接)

 也可以用-L来访问函数库,因为函数库没有放在标准位置 -L路径 -l=lib

至此我们就完成了自己的一个函数库libtext.a了,并对它进行了测试。

时间: 2024-09-30 20:55:35

Linux初步编程—创建静态函数库的相关文章

linux SVN服务器创建版本库

1.安装服务 安装svn就简单化了,直接用yum解决了. yum install -y subversion 2.创建版本库 mkidr /svn/obj svnadmin create /svn/obj 3.配置 用svnadmin后,会在/svn/obj目录下生成conf目录,此目录下有三个文件,authz.passwd.svnserver.conf authz   用户权限配置文件 passwd  用户密码配置文件 svnserver.conf  主配置文件 编辑svnserver.con

linux 下 svn 创建版本库及文件导入和导出

1.安装svn服务 # yuminstall subversion 2.新建一个目录用于存储SVN所有文件 #mkdir -p  /cbroot/svnserver/cbweb 3.在上面创建的文件夹中为项目 project_1 创建一个版本仓库 # svnadmin create /cbroot/svnserver/cbweb/trunk 4.为项目配置权限 (1)svnserve.conf 是主配置文件 vim /cbroot/svnserver/cbweb/trunk/conf/svnse

linux屏幕编程:curses库的使用

curses库是一组函数,可以用它来设置光标的位置和终端屏幕上显示的字符样式.curses库将终端屏幕看成是由字符单元组成的网格,每一个单元由(行.列)坐标对标示.坐标原点是屏幕的左上角,行坐标自上而下递增,列坐标自左而右递增. 这里介绍几个常用函数: initscr()        初始化curses库和tty endwin()         关闭curses库并重置tty refresh()        使屏幕按照自己的意图显示 move(r,s)        移动光标到屏幕的(r,

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

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

嵌入式 Linux系统编程(三)——标准IO库

嵌入式 Linux系统编程(三)--标准IO库 与文件IO函数相类似,标准IO库中提供的是fopen.fclose.fread.fwrite等面向流对象的IO函数,这些函数在实现时本身就要调用linux的文件IO这些系统调用. 一.标准IO库函数的缓冲机制 由于IO设备的访问速度与CPU的速度相差好几个数量级,为了协调IO设备与CPU的速度的不匹配,对于块设备,内核使用了页高速缓存,即数据会先被拷贝到操作系统内核的页缓存区中,然后才会从操作系统内核的缓存区拷贝到应用程序的地址空间. 当应用程序尝

Linux高级编程--02.gcc和动态库

在Linux环境下,我们通常用gcc将C代码编译成可执行文件,如下就是一个简单的例子: 小实验:hello.c #include <stdlib.h> #include <stdio.h> void main(void) { printf("hello world!\r\n"); } 可以通过如下指令来编译出一个可执行文件: gcc hello.c 执行完该命令后,就会得到一个a.out的可执行文件. 编译的过程 前面的例子只是简单的介绍了一下gcc的使用方法,

Linux网络编程初步

目录 Linux网络编程初步 主机字节序和网络字节序 一个网络编程的例子 Linux网络编程初步 主机字节序和网络字节序 32位置机器一次性能装载4字节.那么四字节在内存的顺序影响它被累加器装载成的整数的值.主要分为大端和小端. 大端字节序是一个整数高位字节(23~31bit)存在内存的低处,低字节(0~7 bit) 存储在内存的高地址处.小端相反. 现代PC大多是小端序.小端就称为主机字节序.JVM采用大端(网络字节序).下面是检测大端小段的案例 我的linux机子是小端序了... union

Linux的静态函数库和动态函数库

一.在Linux中,有两种函数库,以*.so后缀命名的是动态函数库,以*.a后缀命名的是静态函数库 对于静态函数库:在编译链接时候,程序所需要的函数会从静态函数库中拷贝到执行文件中.当程序运行的时候,就不需要链接外部的函数库了. 对于动态函数库:在编译链接时,程序所需要的函数不会从动态函数库中拷贝出来,而是在程序运行的时候,才会将所需要的函数加载进来. 二.静态函数库 1.静态函数库是多个目标文件*.o的集合 2.可以使用ar命令(archiver)来生成.a文件 gcc -c part_a.c

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

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