21xrx.com
2024-12-22 22:15:12 Sunday
登录
文章检索 我的文章 写文章
Linux C++ 多文件编译 .so
2023-06-21 03:49:37 深夜i     --     --
Linux C++ 多文件编译 so 共享库

在 Linux 环境下,C++ 的多文件编译可以采用静态链接,也可以采用动态链接。在动态链接的方式中,可以使用共享库(.so)的形式进行编译,这样可以把程序的不同模块分开编译,减小程序的体积,提高程序的模块性和可维护性。

下面我们来看一下如何在 Linux 中使用 C++ 多文件编译 .so:

第一步,创建源文件

我们可以在一个目录下,创建多个源文件,例如 main.cpp、module1.cpp 和 module2.cpp。其中,main.cpp 是程序的入口文件,module1.cpp 和 module2.cpp 则是我们要编译成共享库的模块文件。

代码如下:

main.cpp


#include "module1.h"

#include "module2.h"

int main(int argc, char* argv[])

{

  module1_function();

  module2_function();

  return 0;

}

module1.h


#ifndef MODULE1_H

#define MODULE1_H

void module1_function();

#endif

module1.cpp


#include "module1.h"

void module1_function()

  // do something

module2.h


#ifndef MODULE2_H

#define MODULE2_H

void module2_function();

#endif

module2.cpp


#include "module2.h"

void module2_function()

  // do something

第二步,编译成共享库

我们使用 g++ 编译器,使用 -shared 参数编译成共享库,命令如下:


g++ -shared -o libmodule.so module1.cpp module2.cpp

这个命令会把 module1.cpp 和 module2.cpp 编译成名为 libmodule.so 的共享库文件。

第三步,编译主程序

我们使用 g++ 编译器编译主程序,使用 -L 参数指定共享库文件的路径,使用 -l 参数指定共享库的名称,命令如下:


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

这个命令会编译出一个名为 main 的可执行文件,使用 -L. 参数指定当前目录为共享库文件的路径,使用 -lmodule 参数指定共享库的名称。

第四步,运行程序

我们可以直接运行 main 可执行文件,它会调用 libmodule.so 中的函数,完成程序的功能。

通过这样的方式,我们可以把一个大型的 C++ 程序分成多个模块,以共享库的形式编译和链接,提高程序的模块化和可维护性。

  
  

评论区

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