网站大量收购独家精品文档,联系QQ:2885784924

关于Linux中库函数的几个问题.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于Linux中库函数的几个问题

关于关于 LinuxLinux 中中库函数的几个问题库函数的几个问题 关于关于 LinuxLinux 中中库函数的几个问题库函数的几个问题 linux 下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows 中的.obj 文件 .so 为共享库,是shared object,用于动态链接的,和dll 差不多 .a 为静态库,是好多个.o 合在一起,用于静态链接 .la 为libtool 自动生成的一些共享库,vi 编辑查看,主要记录了一些配置信息。可以用 如下命令查看*.la 文件的格式 $file *.la 输出 *.la: ASCII English text 。所以可以用vi 来查看 其内容。 创建.a 库文件和.o 库文件: [root@localhost test]$ pwd /home/root/test [root@localhost test]$ cat mylib.c #include stdio.h #include string.h void hello(){ printf(success call from perl to c library\n); } [root@localhost test]$ cat mylib.h extern void hello(); [root@localhost test]$ gcc -c mylib.c [root@localhost test]$ dir mylib.c mylib.h mylib.o [root@localhost test]$ ar -r mylib.a mylib.o ar: 正在创建 mylib.a [root@localhost test]$ dir mylib.a mylib.c mylib.h mylib.o 动态链接库*.so 的编译与使用 动态库*.so 在linux 下用c 和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库 的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动 态库链接库而苦恼的兄弟们提供一点帮助。 1、动态库的编译 下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c 文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。 so_test.h : #include stdio.h #include stdlib.h void test_a(); void test_b(); void test_c(); test_a.c : #include so_test.h void test_a() { printf(this is in test_a...\n); } test_b.c : #include so_test.h void test_b() { printf(this is in test_b...\n); } test_c.c : #include so_test.h void test_c() { printf(this is in test_c...\n); } 将这几个文件编译成一个动态库:libtest.so $ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 2、动态库的链接 在1、中,我们已经成功生成了一个自己的动态链接库libtest.so,下面我们通过一个程 序来调用这个库里的函数。程序的源文件为:test.c 。 test.c : #include so_test.h int main() { test_a(); test_b(); test_c(); return 0; } 将test.c 与动态库libtest.so 链接生成执行文件test : $ gcc test.c -L. -ltest -o test 测试是否动态链接,如果列出libtest.so,那么应该是链接正常了 $ ldd test 执行test,可以看到它是如何调用动态库中的函数的。 3、编译参数解析 最主要的是GCC 命令行的一个选项: -sh

文档评论(0)

ayangjiayu4 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档