linux中静态库的生成和应用

基本上整整一天都在看关于linux下如何构建静态、共享、动态库的章节,多多少少有了一些领悟。现在来总结一下。库是目标文件的一个集合或容器。将有关联的文件整合到一个库中,可以简化开发人的工作。文件将静态库中需要的部分整合到自己生成的目标文件中,不再需要静态库。静态库举个例子:定义一个API头文件,中包含2个函数,但函数本身并不在头文件中#ifndef
摘要由CSDN通过智能技术生成
基本上整整一天都在看关于linux下如何构建静态、共享、动态库的章节,多多少少有了一些领悟。现在来总结一下。

库是目标文件的一个集合或容器。将有关联的文件整合到一个库中,可以简化开发人的工作。

文件将静态库中需要的部分整合到自己生成的目标文件中,不再需要静态库。

静态库举个例子:

定义一个API头文件,中包含2个函数,但函数本身并不在头文件中


#ifndef __RAND_API_H
#define __RAND_API_H

extern void initRand(void);
extern float getSRand(void);
extern int getRand(int max);

#endif

同时在两个文件中详细定义这3个函数

initapi.c
randapi.c

这样就准备好了API

然后编辑test.c文件,其中
#include "randapi.h"

最后用
gcc initapi.c randapi.c test.c -o test


将他们3者整合到一起。

以上并没有用到库,下面将生成静态库

首先将两个 .c文件编译,但不连接,然后使用 ar -cru这个命令声称静态库

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cmake是一个跨平台的自动化构建工具,可用于生成各种类型的项目文件。CMakeLists是cmake的配置文件,用于描述如何生成编译器所需的构建信息。 在linux系统静态库和动态库是常见的可重定向目标文件。静态库是将所有依赖项打包在一起,并在应用程序链接时一起编译的库。而动态库是在应用程序运行时加载并链接到运作时环境的库。 生成静态库非常简单。在CMakeLists,我们可以添加库的名称和源文件,然后调用add_library命令来构建静态库。例如,下面的代码段定义了一个叫做mylibrary的静态库,并将两个源文件相连: add_library(mylibrary STATIC source1.cpp source2.cpp) 生成静态库文件通常被命名为libmylibrary.a。 现在我们想要使用上述静态库生成一个动态库,我们需要在CMakeLists再一次调用add_library命令,但这次类型应该是“SHARED”,表示动态库。同时需要注意的是,在生成动态库的同时,我们需要链接到之前生成静态库。下面是一个示例代码: add_library(mylibrary_dynamic SHARED source3.cpp) target_link_libraries(mylibrary_dynamic mylibrary) 上述代码会将源文件source3.cpp编译为动态库,并将之前生成静态库mylibrary链接到动态库mylibrary_dynamic生成的动态库文件通常被命名为libmylibrary_dynamic.so。 总之,cmakelists可以用来生成静态库和动态库。生成静态库时我们需要调用add_library命令,并指定STATIC类型;而生成动态库时,我们需要调用add_library命令,并指定SHARED类型,同时会涉及到链接上一个静态库。以上就是使用cmakelists来生成静态库并用静态库生成动态库的具体方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值