ubuntu下编译c程序之多个 .c文件关联
2013-05-11 18:04
176 查看
当编译需要将多个 .c 文件关联时,即需要建立静态库。静态库是编译器生成的普通.o文件的集合。链接一个程序时用库中的对象文件还是目录中的对象文件都是一样的,静态库亦称归档文件(archive),管理这种工具的文件叫ar。
要构建一个库,首先要编译出库中需要的对象模块。例如:有三个文件,file1.c file2.c main.c
main.c 文件引用了file1.c和file2.c中的函数,想要成功编译则:
第一步:$gcc -c -Wall file1.c file2.c
这时会生成两个文件:file1.o和file2.o
程序ar配合参数-r可以创建一个新的库并将对象文件插入。如果库不存在,则会创建新库,并将对象模块添加到归档文件中。
第二步:$ar -r libmain.a file1.o file2.o
现在库已经构建完成可以使用了。
第三步:$gcc -Wall main.c libmain.a -o main
静态库的命名惯例是名字以lib开头并以.a为后缀名结束。
要构建一个库,首先要编译出库中需要的对象模块。例如:有三个文件,file1.c file2.c main.c
main.c 文件引用了file1.c和file2.c中的函数,想要成功编译则:
第一步:$gcc -c -Wall file1.c file2.c
这时会生成两个文件:file1.o和file2.o
程序ar配合参数-r可以创建一个新的库并将对象文件插入。如果库不存在,则会创建新库,并将对象模块添加到归档文件中。
第二步:$ar -r libmain.a file1.o file2.o
现在库已经构建完成可以使用了。
第三步:$gcc -Wall main.c libmain.a -o main
静态库的命名惯例是名字以lib开头并以.a为后缀名结束。
相关文章推荐
- VC中建立程序的关联文件
- 一次性修改windows7系统常见文件类型关联与默认打开程序
- vs2010编译什么程序都失败,无法打开库里自带的文件如stdio.h
- NanoPi—M1(H3)———HAL程序编译、打包进安卓系统镜像以及so文件存放位置
- Android菜鸟笔记-关联APK程序打开的文件类型:MimeType
- 【Unity3d】在Unity3d中调用外部程序及批处理文件,写自动化编译脚本需要注意的地方
- [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
- 使用pl/sql developer开发工具无法编译存储过程,触发器,包等程序文件
- 让VC编译出来的程序不依赖于msvcr80.dll/msvcr90.dll/msvcr100.dll等文件
- 在linux中如何编译C程序,使之成为可执行文件?如何调试?
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
- C/C++程序编译步骤 如何生成可执行文件
- win7:该文件没有与之关联的程序来执行该操作。请安装一个程序,或者,如果已安装程序,请在“默认程序”控
- 所有exe文件程序关联都被默认修改为pdf,的解决方法
- C#数据文件与程序的关联
- wince 文件关联程序
- linux 编译程序时缺少库文件
- 打开未关联文件时,禁用 "使用Web服务寻找适当的程序"
- MVC 程序在编译时提示 GAC与 Temporary ASP.NET Files目录内引用文件版本不一致
- [C/C++] VC2012编译的程序在WinXP下报告“指定的可执行文件不是有效的 Win32 应用程序”错误