21xrx.com
2024-06-03 00:32:18 Monday
登录
文章检索 我的文章 写文章
如何创建和使用C++静态库
2023-07-08 12:24:27 深夜i     --     --
C++ 静态库 创建 使用 编译

C++静态库是将一个或多个预先编译好的C++源文件打包在一起的二进制文件。它们通常使用作为依赖项,使许多程序都能使用它们而不必再次编译这些源文件。在本文中,我们将学习如何创建和使用C++静态库。

创建一个C++静态库

在创建一个C++静态库之前,需要先创建一个或多个C++源文件。然后将这些源文件编译成目标文件。下面是一个示例程序:

比如我们的代码如下:

$ cat mylib.h

#ifndef MYLIB_H_INCLUDED

#define MYLIB_H_INCLUDED

void hello();

#endif

$ cat mylib.cpp

#include

#include "mylib.h"

void hello() World!" << std::endl;

现在,我们需要将mylib.cpp编译成目标文件。为此,我们可以使用g ++(GNU编译器集合中的一种):

g++ -c mylib.cpp -o mylib.o

现在我们可以将这个目标文件打包成C++静态库。我们需要使用ar(GNU软件开发工具包中的一种)命令来完成这个任务:

ar rcs libmylib.a mylib.o

在这个命令中,我们将生成静态库libmylib.a。该命令的各个选项含义分别如下:

r - 将随后指定的文件添加到库中或替换其中的现有文件。

c - 创建库文件(等效于任务:当库文件不存在时先创建该库文件)。

s - 在库文件中创建完整的符号表。

使用C++静态库

要使用一个C++静态库,在编译器中链接该库即可。下面的例子演示了如何使用我们创建的mylib静态库:

g++ main.cpp -o main -L. -lmylib

在这个命令中,我们使用选项-L指定库的位置(在本示例中是当前目录),并使用选项-l来指定要使用的库。

打包多个目标文件的C++静态库

如果你需要打包多个目标文件,你可以使用ar来完成这个任务。下面是一个使用两个C++源文件的例子:

g++ -c mylib1.cpp -o mylib1.o

g++ -c mylib2.cpp -o mylib2.o

ar rcs libmylibs.a mylib1.o mylib2.o

然后,使用以下命令来以同样的方式链接库:

g++ main.cpp -o main -L. -lmylibs

现在你已经学会了如何创建和使用C++静态库,这将有利于你在多个代码文件之间共享代码。静态库可以在各种平台上运行,无论是在Microsoft Windows,Unix/Linux还是其他平台下。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复