linux makefile,在Linux系统中Makefile静态动态库创建应用

时间:2021-06-28 17:38 作者:IIS7 admin

    在Linux系统中:
    静态库的创建
    gcc-cfilen.c
    ar-crlibname.afile1.ofile2.o...
    ar:静态函数库创建的命令
    -c:create的意思
    -r:replace的意思,表示当前插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误信息,并不替换其他同名的模块。默认的情况下,新的成员增加在库德结尾处。
    动态库的创建
    gcc-shared-fpic-olibname.sotest1.ctest2.c....
    -fpic:产生代码位置无关代码
    -shared生成一个共享库
    Makefile创建库文件
    比较容易懂得方式是:
    上面的?=表示如果该变量没有赋值,则进行负责操作。
    下面有种比较方便管理但是比较难理解的书写方式:
    现在有下面的文件:
    文件里面内容与《Makfile应用进阶实例》中内容一致
    将目录source文件打包成一个动态库和一个静态库,随后将库文件安装到lib目录,调用的是source目录下的Makefile
    Makefile:
    运行结果:
    库文件应用:
    如果直接在shell中使用命令:
    动态调用库文件:
    gcc main.c-I./include/-L./lib/-ltest-oapp
    在运行可执行文件APP之前,需要指定动态库的位置,否则会出现找不到库文件的错误:
    exportLD_LIBRARY_PATH='/home/biao/test/Makefile_test/lib/'
    如果不指定库的位置,也可以直接将库放到/lib或者/usr/lib下
    静态库文件调用:
    gcc-static main.c-I./include/-L./lib/-ltest-oapp_static
    另一种方法:直接添加静态库
    gcc main.c-I./include/./lib/libtest.a-oapp_static
    如果同时有静态库和动态库,默认使用的是动态库。
    在Makefile中链接库文件:
    这里同时生产两个可执行文件:share_test和static_test
    执行结果如下:
    原文链接:https://blog.csdn.net/li_wen01/article/details/65627086