如何把一堆 .C 文件 做成一个 .lib 库呢?

icemoon1987 2008-07-31 08:03:16
我是一名大学生,假期和几位学长在一起做项目。
现在遇到了一个不明白的地方,请各位高手帮帮忙。

我现在有一堆的C文件,里面是我的一些函数的实现。每次要用这些函数时,必须要把这些文件都包含在工程里,很不方便。
请问,如何能把这些C文件做成一个lib库呢?这样是不是我只要包含这个库就可以了?

谢谢了!
...全文
1025 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
seufl 2008-08-01
  • 打赏
  • 举报
回复
VC下新建工程时,选择最后一项Win32 Static Liabrary,将你的.c文件添加到这个工程中,编译即可得到.lib文件了
hemiya 2008-08-01
  • 打赏
  • 举报
回复
不好意思啊,我对VC还不熟,能不能请您说得稍微详细一点?
------------------------------------------------
呵呵,问我vc具体的操作就问错了,我不用vc,用cbuilder.
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vxworksdoc 的回复:]
知道Linux下怎么做 先编译 .c文件 为 .o文件 然后用 ar工具 做成.a文件(静态链接库)或者 .so文件(动态链接库)
[/Quote]
up
xianyuxiaoqiang 2008-08-01
  • 打赏
  • 举报
回复
我习惯把这些函数放一个文件里,然后把该文件做成头文件。
e_sharp 2008-08-01
  • 打赏
  • 举报
回复
不好意思啊,我对VC还不熟,能不能请您说得稍微详细一点?

------------------------------

就是工具,用用就熟了

现在,这些孩子动手能力这么差
icemoon1987 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hemiya 的回复:]
编译成静态链接库节省的是编译的时间,使用上没省事。
1、要#include头文件.
2、要引用lib文件.

在vc,cb,devc++,中都有静态库的方案,新建方案后,把要加入库的c文件和头文件加入方案,编译就可以了。
[/Quote]
不好意思啊,我对VC还不熟,能不能请您说得稍微详细一点?
icemoon1987 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 realdragon2 的回复:]
这些.c文件有没有对应的.h文件来声明.c文件所实现的函数呢? 如果有的话,可以这样来创建和使用静态库(Linux下):
假如在当前目录下有一个.c源文件: mylib.c,对应的.h文件为mylib.h. 创建的静态库名称为: libmylib.a.

C/C++ code1) gcc-c-o mylib.o mylib.c2) ar rcs libmylib.a mylib.o3) mv libmylib.a/usr/lib/4) vi test.c(#include"mylib.h")/*for test*/

[/Quote]
哦,谢谢,不过我实在WINDOWS下用的。
请问一下,LINUX能不能生成WINDOWS下能用的.lib 文件呢??
icemoon1987 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hemiya 的回复:]
编译成静态链接库节省的是编译的时间,使用上没省事。
1、要#include头文件.
2、要引用lib文件.

在vc,cb,devc++,中都有静态库的方案,新建方案后,把要加入库的c文件和头文件加入方案,编译就可以了。
[/Quote]
哦,是这样啊。但是我们编程时需要用一个库CRYPTOPP++。这个库从网上下下来就只有一个.lib 文件,和一个include文件夹放.h文件,使用的时候只要包含这个.lib 文件,然后再#include 我需要的头文件就可以了,觉得挺方便的。
不知道有没有办法把我们的那些C文件也弄成这样使用呢?
realdragon2 2008-07-31
  • 打赏
  • 举报
回复
这些.c文件有没有对应的.h文件来声明.c文件所实现的函数呢? 如果有的话,可以这样来创建和使用静态库(Linux下):
假如在当前目录下有一个.c源文件: mylib.c,对应的.h文件为mylib.h. 创建的静态库名称为: libmylib.a.



1) gcc -c -o mylib.o mylib.c
2) ar rcs libmylib.a mylib.o
3) mv libmylib.a /usr/lib/
4) vi test.c(#include"mylib.h") /*for test*/


hemiya 2008-07-31
  • 打赏
  • 举报
回复
编译成静态链接库节省的是编译的时间,使用上没省事。
1、要#include头文件.
2、要引用lib文件.

在vc,cb,devc++,中都有静态库的方案,新建方案后,把要加入库的c文件和头文件加入方案,编译就可以了。
vxworksdoc 2008-07-31
  • 打赏
  • 举报
回复
知道Linux下怎么做 先编译 .c文件 为 .o文件 然后用 ar工具 做成.a文件(静态链接库)或者 .so文件(动态链接库)
icemoon1987 2008-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Demon__Hunter 的回复:]
静态库lib跟.c文件差不多,用静态库一般也要#inlcude头文件的
[/Quote]
恩,我只是觉得这样可能方便一些。#include头文件倒是没啥。因为头文件不多。呵呵
程序是几个人分开写的,每个人都写了一个C文件,现在往一起和时觉得不太方便。
机智的呆呆 2008-07-31
  • 打赏
  • 举报
回复
静态库lib跟.c文件差不多,用静态库一般也要#inlcude头文件的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧