• 静态、动态函数库的设计


    Linux应用程序需要调用外部函数,主要来源:系统调用、函数库

    函数库的链接方式有:静态函数库、动态函数库两种!

       动态函数库:副档名为 .so,文件放置于"/lib/"目录中。  通过内存链接的方式进行调用,避免重复复制,灵活,节省运行空间,主推  --->>>不可独立运行

       静态函数库:副档名为 .a,文件放置于"/usr/lib/"目录中。  是把整个包 括入程序里的,多进程运行时重复复制到所需的地方,程序占存比较大,升级麻烦  --->>>编译后的执行程序可独立运行。

    Linux下的库函数链接方式默认是动态函数库,链接静态库需加上“ -static ”选项。

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

    命名有两个:链接名(myilb)和库文件命名(libmyilb),其中库文件名=“ lib + 链接名    

      链接名(myilb.o:作为函数库链接,GCC默认链接C函数库,其他库需加“ -l ”,“ gcc  (static)  -lmylib test.c -o test ”(编译用);  

      库文件名(libmylib.so / libmylib.a:最后生成的函数库文件名字,用于存储于系统目录/usr/lib/或lib/内;

     

      动态函数库设计:

    1)gcc -c mylib.c -o mylib.o        //将函数文件"-c"不完全编译,"-o"定名mylib.o链接
    2gcc -share -fPIC mylib.o -o libmylib.so     //制作成动态函数库,“-o”定名为libmylib.so
                                                    //  -fPIC  规定输出对象的方式      -share指明产生动态库
    3)cp libmylib.so /lib                //动态库文件置于指定目录下

         静态函数库设计:

    1)gcc -c mylib.c -o mylib.o        //将函数文件"-c"不完全编译,"-o"定名mylib.o链接
    2ar cqs libmylib.a mylib.o      //制作成静态函数库,定名为libmylib.a
                                                    //  ar cqs 指令是生成库文件的意思
    3)cp libmylib.so /usr/lib                //静态库文件置于指定目录下

    以上动、静态函数库均制作完成!

      欲使用自己制作的库函数,在要使用库函数的.c文件的目录下添加.h文件,里面声明一下要用到的库函数

    eg:" touch mylib.h " -> mylib.h文件内声明" int name (int a, float b); "等 -> 在应用程序中加入头文件" #include <mylib.h> "即可。

    步骤:

    1.制定静/动态函数库;  

    2.库函数文件复制至对应的目录中,并添加 name.h 文件声明库函数;

    3.应用程序中加入自制库函数的头文件" #include <name.h> "即可使用;

    4,编译完成。

    动态:gcc test.c -lmylib -o test;  静态: gcc test.c -static -lmylib -o test;

  • 相关阅读:
    操作系统复习目录
    leetcode Trapping Rain Water
    leetcode First Missing Positive
    leetcode Combination Sum II
    leetcode Word Search 待解决?
    [HDU] 1074 Doing Homework (NP性质的DP,远没有过去的自己写得好了)
    [HDU] 4513 吉哥系列故事——完美队形II
    [HDU] 4512 吉哥系列故事——完美队形I(有点dp味道的递归模拟)
    [HDU] 4519 郑厂长系列故事——体检
    [HDU] 4527 小明系列故事——玩转十滴水
  • 原文地址:https://www.cnblogs.com/hjh-666/p/11196586.html
Copyright © 2020-2023  润新知