使用make

Posted wtsgtc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用make相关的知识,希望对你有一定的参考价值。

5.11  库的使用

  代码的复用是计算机程序设计语言中的一个重要的概念。可以把编译好的目标文件模块统一放到一个库中,使得程序员可以在不同的程序中共享这些代码。

  在Linux操作系统下,最后连接生成可执行文件时,如果链接的是一般的.o文件,则整个文件的内容都会被装入可执行文件中;如果链接的是库,则只是从库中找到程序中用到的变量和函数,将它们装入可执行文件中,那些在库中没有被程序所引用的变量和函数则不会被链接到最终的可执行文件。

  所以,库可以节省大量的开发时间。在写较大程序时,最好把程序模块放在库中。

  5.11.1  创建库和维护库

    库中所有文件都叫作库的成员,可以时用以下格式来表示库的成员:

    库名(成员名)

    如:

    mylib.a(mytest5_1.o)

    用来表示库mylib.a中的一个文件mytest5_1.o。  #.a为库常用的扩展名

    表示库成员的另一个格式:

    库名((entry))

    

    使用下面格式来说明库和成员的依赖关系:

    库名:库名(成员名) 库名(成员名) ...

    另一种格式说明依赖关系:

    库名 .LIBRARY:成员名1 成员名2 ...

    示例:维护一个名为mylib的库,makefile文件格式如下:

mylib:mylib(test5_1.o)
    gcc -c test5_1.c
    ar -ruv mylib test5_1.o
    rm test5_1.o
mylib:mylib(test2.o)
    gcc -c test2.c
    ar -ruv mylib test2.o
    rm test2.o

    ar 命令的作用是从.o结尾的目标文件更新库,格式如下:

    ar -ruv 库名 目标文件名

    上面两段代码很相似,可以利用动态宏合并不同的文件,代码如下:

    

    

以上是关于使用make的主要内容,如果未能解决你的问题,请参考以下文章

1 代码片段1

代码片段 - Golang 实现集合操作

片段中的Android Snackbar NullPointerException

makefile中的Cflags用法

不能在使用 make 和 g++ 构建的代码中使用 std::filesystem

微信小程序代码片段