分享

应用程序与外部函数链接

 audrey_guowei 2010-06-21
应用程序用两种方式与外部函数链接:
1.在构建时与静态库(lib.a)静态地链接,并且将库代码包含在应用程序的可执行文件里。
2.在运行时与共享库(lib.so)动态地链接,通过动态链接接入器,将动态库映射进应用程序的可执行内存中。
  在启动应用程序之前,动态链接装入器将所需的共享目标库映射到应用程序的内存。
 
静态函数库:实际上就是普通的目标文件的集合,一般以.a为后缀
例如有文件 file1.c file2.c file3.c file.h
gcc -c file1.c file2.c file3.c 对文件编译生成file1.0 file2.0 file3.0 目标文件
ar -rc libfile.a file1.o file2.o file3.o  将目标文件打包成libfile.a库文件
如果文件main.c 需要使用到libfile.a
gcc -c -I xxxx  main.c   编译生成对应的目标文件 -I是指定对应的头文件的路径
gcc -o main -Lxxx main.o libfile.a  生成可执行文件 -L指定对应的库文件的路径
共享库(动态链接库)的生成:
gcc -fpic -shared -o libfile.so file1 file2 file3
-fpic 使输出的对象模块是按照可重定位地址方式生成
-shared 指定把对应的源文件生成对应的动态链接库文件libfile.so文件
调用分为隐式和显式
1.隐式
 gcc -c -Ixxx main.c
 gcc -o main -Lxxx main.o libfile.so
2.显式
 在main.c文件中调用dlopen() dlsym()等函数
  gcc -o mian ldl main.c

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多