从多个C++文件生成 .so 文件并使用它
Build a .so file from multiple C++ files and use it
我有一个程序树,其中包含
outter.cc, outter.h
b.cc, b.h
c.cc, c.h
每个.cc
文件如下所示:
outter.cc:
#include "b.h"
// do something
b.cc
#include "c.h"
// do something
c.cc
//do something
outer.cc
是一堆 API 定义。我想生成一个 .so 文件,以便其他人在将他们的程序与此 .so 文件链接时可以使用我的 API。
我的问题包括:
如何生成这个 .so 文件?我基本上将所有代码"打包"到一个.so文件中
如果我设法生成了这个 .so 文件,如何使用它?假设我在另一个目录中有一个
main.cc
文件/home/xavier/test/
并且我在/home/xavier/test/
中也有生成的 .so 文件。我应该如何编写此main.cc
以及如何编译此 main.cc 文件以使其使用我在 outter.cc 中定义的 API?
我正在使用 Mac OS X 和 g++
谢谢!
如下所示的生成文件:
all:a.so
a.so: outer.o b.o c.o
g++ $^ -fPIC -shared -o $@
%.o:%.cc
g++ $< -I(your header file path) -c -o $@
生成 .o 文件时不要忘记 -c 标志
如果 liba.so 与 main.cc 位于同一文件夹中,则可以
g++ main.cc -la -o main
main.cc 应包括 Outter.h b.h c.h
或者您将 a.so 重命名为 liba.so 然后将其放入/usr/lib/中 并运行g++ main.cc -la -o main
相关文章:
- 如何使用ndk-build.cmd构建Android.so文件
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 如何从构建 libgpio.so 的生成文件构建libgpio.a
- 用于构建 cuda .so 文件(共享库)的生成文件
- 无法从 SO 文件调用 SO 文件的函数 - C++生成文件
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 C++ 的 .so 文件中包含库
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- Google Colab 看不到 .so 文件
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 如何在 Linux 中从 .so 文件打开可执行文件?
- 如何在makefile中包含tensorflow c ++".so"文件?
- 缺少 .h 文件,尽管从库文件夹链接了 .so 文件
- 如何在 CMake 超级生成中查找 dll/so 文件
- 如何用.so文件linux打包所有需要的库
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- 如何使用 gnu c++ 程序获取共享对象文件(.so 文件)的体系结构
- EMF文件(.so)调试,符号找不到VTable错误
- 如何将c++库作为共享对象文件(.so)加载到Python中?