欢迎来到天天文库
浏览记录
ID:46612427
大小:77.50 KB
页数:5页
时间:2019-11-26
《Linux基础---静态库编写》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1•编写2个c文件,这2个文件作为库文件test_func1.cviewplaincopytoclipboardprint?1.#include2.voidtest_funcl(intarg)3.{4.printf(utestfundarg:%drT$arg);5・}test_func2.cviewplaincopytoclipboardprint?1.#include2.voidtest_func2(char*arg)3.{4.printf(Htestfunc2arg:%s",arg);5・}2•编译这2个文件gc
2、c-ctest_funci.ctest_func2.c3.编写一个头文件用來函数声明test_lib.hviewplaincopytoclipboardprint?1.voidtest_funcl(int);2・voidtest_func2(char*);4•创建静态库文件arcrvlibtest.atest_funci.otest_func2.o4•静态库的符号索引农进行更新。ranliblibtest.a5•编写主程序test_program.cviewplaincopytoclipboardprint?1.#inelude2.#in
3、clude3.intmain()4.{5・test_func2(''HelloWorld");6.exit(0);7.}7.编译主程序gcc-c-I.test_program.cgcc-otest_programtest_program.o-L.-Itest以上就是静态库的创建和使用以下是用到的ar打包库ranlib的说明,这部分是转载于ChinaUnix博客:1、ar基本用法ar命令可以用來创建、修改库,也可以从库小捉出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文
4、件的内容、模式、时间戳、属主、组等属性都保留在库文件中。下面是ar命令的格式:ar[-][abcfilNoPsSuvV][membername][count]archivefiles...例如我们可以用arrvlibtest.ahello.ohellol.o来生成一个库,库名字是test,链接时可以用"test链接。该库中存放了两个模块hello.o和hellol.0。选项前可以有字符,也可以没有。下面我们来看看命令的操作选项和任选项。现在我们把部分称为操作选项,而[abcfilNoPsSuvV]部分称为任选项。中的操作选项在命令屮只能并且必须使用其屮一个,
5、它们的含义如下:d:从库中删除模块。按模块原來的文件名拆定要删除的模块。如果使用了任选项v则列出被删除的每个模块。m:该操作是在一个库中移动成员。当库中如果有若干模块有和同的符号定义(如函数定义),则成员的位置顺序很重要。如果没有指定任选项,任何指定的成员将移到库的最后。也可以使用'a','b',或T任选项移动到指定的位置。P:显示库中指定的成负到标准输出。如果指定任选项v,则在输出成员的内容前,将显示成员的名字。如果没冇指定成员的名字,所冇库中的文件将显示出來。q:快速追加。増加新模块到库的结尾处。并不检查是否爲要替换。’a','b',或T任选项对此操作没
6、冇影响,模块总是追加的库的结尾处。如果使用了任选项v则列出每个模块。这时,库的符号表没有更新,可以用'ars'或ranlib来更新库的符号表索引。r:在库屮插入模块(替换)。当插入的模块名己经在库中存在,则替换同名的模块。如果若干模块屮有一个模块在库中不存在,ar显示一个错谋消息,并不替换其他同名模块。默认的借况下,新的成员增加在库的结尾处,可以使用其他任选项來改变増加的位置。t:显示库的模块表淸单。一般只显示模块名。x:从库中提取一个成员。如杲不指定要提取的模块,则提取库中所有的模块。下面在看看可与操作选项结合使用的任选项:a:在库的一个已经存在的成员后面
7、增加一个新的文件。如果使用任选项a,则应该为命令行中membername参数指定一个已经存在的成员名。b:在库的一个已经存在的成员前而增加一个新的文件。如果使用任选项b,则应该为命令行中membername参数指定-•个已经存在的成员名。c:创建一个库。不管库是否存在,都将创建。f:在库中截短指定的名字。缺省情况下,文件名的长度是不受限制的,可以使用此参数将文件名截短,以保证与其它系统的兼容。i:在库的一个已经存在的成员前面增加一个新的文件。如果使用任选项i,则应该为命令行中membername参数指定-•个已经存在的成员名(类似任选项b)。I:暂未使用N:
8、与count参数一起使用,在库屮有多个相同的文件名时
此文档下载收益归作者所有