c++ - g++,创建用于分发的静态库

标签 c++ boost g++ static-libraries

我的代码可以使用以下 makefile 编译良好

all: sample

sample: sample.o mylib.o
    g++ -Wall -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -o sample -L/usr/lib sample.o mylib.o -lboost_serialization -lboost_iostreams -lz -I /usr/include/boost 

sample.o: sample.cpp
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o sample.o sample.cpp

mylib.o: mylib.cc mylib.h
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -I /usr/include/boost -c -o mylib.o mylib.cc

现在,mylib.cc 和 mylib.h 包含许多我想分享的有用代码。但是,这取决于我的目标受众可能没有或不知道如何正确安装的 Boost。

有没有办法让我分发一个与 mylib.h 静态的 mylib.o,我的最终用户可以将其编译成自己的代码,而无需安装 Boost?

额外说明:mylib.h 不包含任何 BOOST header ,但 mylib.cc 确实包含 boost header 。

最佳答案

如果 mylib.h 包含 Boost 头文件,则这些头文件需要以某种形式存在于开发人员的系统上。至少,您必须将 Boost 的这一部分与您的代码一起提供。

但是,如果您可以创建一个较小的头文件,仅公开库的各个部分,并且不包含也不引用 Boost 中的任何内容,那么您就可以。大多数 Boost 都是头文件(所需的 Boost 代码将已编译到您的库中)。

关于c++ - g++,创建用于分发的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645137/

相关文章:

c++ - c++ 中 vector<someClass> 的 setter 函数

c++ - 无法使用 opencv2.3 imread 读取图像

c++ - 如何在不在命令行 g++ 中运行 .so 文件的情况下使用它

c++ - AWS 签名版本 4 发生了什么变化

c++ - OpenGL- glDrawElements仅绘制第一个元素

c++ - 从 boost python 导入依赖的 python 库

c++ - boost asio async_read_some 只读取数据片段

c++ - 指定boost::multi_array中所有数组的长度

ubuntu - 为什么g++不能在Ubuntu中正确找到glfw3库?

c++ - std::vector<T> 编译错误 "T cannot appear in a constant-expression"