设为首页 加入收藏

TOP

关于Linux下的库文件
2014-11-24 14:21:32 来源: 作者: 【 】 浏览:1
Tags:关于 Linux 文件

先说说库文件是怎么来的吧。


以C为例,我们写一个程序,一般都不会把所有的函数都写在一个文件里面,通常都是划分模块,然后一个模块若干个文件,然后在main文件里面调用这些模块。我这里用一个magic.c文件代替实际程序中的所有的文件,你就当这个magic.c文件非常神奇,你调用里面的magic()函数后,它会自动按你的想法把剩下的工作都完成。下面是两个文件:


mian.c






一般从C源文件到可执行代码要经过以下4个步骤:预编译(preprocess gcc -E,生成.i文件),编译(compile gcc -S,生成.s文件),汇编(assemble gcc -c,生成.o文件),链接(link 生成可执行文件)。这里只讨论最后两个步骤,汇编和链接。


汇编后的结果是每个源文件都有了对应的二进制代码;链接是把所有的二进制代码打包成一个文件,最后得到可执行文件。


使用这个命令汇编main.c:gcc -Wall -c main.c


-Wall 是列出警告的开关,如果没有这个开关,汇编成功,什么提示都没有,如果打开这个开关,会得到如下一个警告:


main.c:2:3: warning: implicit declaration of function ‘magic’ [-Wimplicit-function-declaration]


要消除这个警告很容易,有两个办法:


1)前面加个声明就好了,void magic();


2)写个magic.h的头文件:




这两种办法的作用是告诉main,现在没有magic的实现不要紧,我确定一定以及肯定这个magic函数是存在的,放心使用就好了,而且告诉了main这个magic该怎么用,参数是什么,返回值是什么。


但是没有magic的声明也没有问题,只是警告,不是错误,因为我们知道我们的magic是怎么定义的,而且我们也确定会在后面链接magic函数。


但是问题就出在这里了,比如我们写了一个超级牛逼的函数想让别人使用,但是这个超级牛逼的函数要下个礼拜才能给别人怎么办呢?我们可以先给个头文件,然后拍着胸脯说你就按照我这个函数声明写,只要你的调用(call)没问题,程序运行的结果就没问题。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux编程之动起手来 下一篇学习Linux编程的几点建议

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: