首页 > Linux考试认证

Linux中如何创建静态库和动态库

时间:2010-09-06 11:33:53  作者:  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
编辑特别推荐: Linux之定时器与时间管理 Linux之查看文件夹大小 shell如何自动输入密码函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,......

  编辑特别推荐:

  Linux之定时器与时间管理

  Linux之查看文件夹大小

  shell如何自动输入密码

  函数库分为静态库和动态库两种。

  静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。

  动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

  程序1: hello.h

  #ifndef HELLO_H

  #define HELLO_H

  void hello(const char *name);

  #endif //HELLO_H

  程序2: hello.c

  #include <stdio.h>

  void hello(const char *name)

  {

  printf("Hello %s!\n", name);

  }

  程序3: main.c

  #include "hello.h"

  int main()

  {

  hello("everyone");

  return 0;

  }

  无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。

  # gcc -c hello.c

  1:创建静态库

  静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。

  # ar cr libmyhello.a hello.o

  使用静态库:只需要在你的源程序中加入包含你所需要使用到的函数的声明(即包含头文件),然后在gcc生成目标文件时候指明静态库就OK了(除非你包含的头文件在/usr/include,库文件在标准库/usr/lib,/lib下,否则你得显示指明他们的路径)

  # gcc -o hello main.c -L. -lmyhello

  # ./hello

  Hello everyone!

  删除静态库文件运行./hello,程序正常运行,说明静态库公用函数已经链接到目标文件。

  2: 利用.o文件创建动态库

  动态库文件扩展名为.so。

  # gcc -shared -fPCI -o libmyhello.so hello.o

  动态库的使用与静态库使用方式一样

  # gcc -o hello main.c -L. -lmyhello

  # ./hello

  ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory

如果您需转载 Linux中如何创建静态库和动态库,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门