我的代码可以使用以下 makefile 编译良好p>
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/