个人工具
登录
查看“Compiling C”的源代码 - Ubuntu中文
页面
讨论
查看源代码
历史
搜索
导航
首页
最近更改
随机页面
页面分类
帮助
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息
查看“Compiling C”的源代码
来自Ubuntu中文
←
Compiling C
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 创建静态库 == 静态库是编译器生成的普通的 .o 文件的集合。链接一个程序时用库中的对象文件还是目录中的对象文件都是一样的。静态库的另一个名字叫归档文件(archive),管理这种归档文件的工具叫 ar 。 要构建一个库,首先要编译出库中需要的对象模块。例如,下面的两个源码文件为 hellofirst.c 和 hellosecond.c: <source lang="c"> /* hellofirst.c */ #include <stdio.h> void hellofirst() { printf(“The first hello\n”); } </source> <source lang="c"> /* hellosecond.c */ #include <stdio.h> void hellosecond() { printf(“The second hello\n”); } </source> 这两个源码文件可以用以下命令编译成对象文件: $ gcc -c -Wall hellofirst.c hellosecond.c 程序 ar 配合参数 -r 可以创建一个新库并将对象文件插入。如果库不存在的话,参数 -r 将创建一个新的,并将对象模块添加(如有必要,通过替换)到归档文件中。下面的命令将创建一个包含本例中两个对象模块的名为 libhello.a 的静态库: $ ar -r libhello.a hellofirst.o hellosecond.o 现在库已经构建完成可以使用了。下面的程序 twohellos.c 将调用该库中的这两个函数: <source lang="c"> /* twohellos.c */ void hellofirst(void); void hellosecond(void); int main(int argc,char *argv[]) { hellofirst(); hellosecond(); return 0; } </source> 程序 twohellos 可以通过在命令行中指定库用一条命令来编译和链接,命令如下: $ gcc -Wall twohellos.c libhello.a -o twohellos 静态库的命名惯例是名字以三个字母 lib 开头并以後缀 .a 结束。所有的系统库都采用这种命名惯例,并且它允许通过 -l(ell) 选项来简写命令行中的库名。下面的命令与先前命令的区别仅在于 gcc 期望的找寻该库的位置不同: $ gcc -Wall twohellos.c -lhello -o twohellos 指定完整的路径名可使编译器在给定的目录中寻找库。库名可以指定为绝对路径(比如 /usr/worklibs/libhello.a)或者相对与当前目录的路径(比如 ./lib/libhello.a)。 选项 -l 不具有指定路径的能力,但是它要求编译器在系统库目录下找寻该库。 选项-L可以指定具体的目录,使编译器在搜寻系统库目录前先搜寻此目录 $ gcc -Wall -L ./lib/ twohellos.c -lhello -o twohellos 假设libhello.a 在当前目录的lib文件夹下。
返回至
Compiling C
。