我想创建一个简单的静态库
my_math.lib
。其头文件和源文件如下。
// my_math.h
#ifndef MY_MATH_H
#define MY_MATH_H
double reciprocal(double d);
#endif
// my_math.cpp
#include "my_math.h"
#include <iostream>
double reciprocal(double d)
{
std::cout << __func__ << std::endl;
return 1.0 / d;
}
为了学习的目的,我按照以下离散步骤编译它:
-
预处理:
cpp my_math.cpp > my_math.ii
-
编译:
g++ -S my_math.ii
(输出为
my_math.s
默认情况下)
-
装配:
as my_math.s -o my_math.o
-
归档:
ar rvs my_math.a my_math.o
提问
如您所见,我上面的库使用
cout
在c/c++标准库中定义。
出于学术目的,是否可以创建一个静态库
my_math.lib
静态链接到c/c++库?我没有找到任何文章说明如何做到这一点。
我们能否将归档步骤扩展到还包括针对c/c++标准库的静态链接?换句话说,是否可以使用
-static
选项由提供
g++
创建静态库时?
编辑:
正如预期的那样
my_math.lib
包含我自己的代码和c/c++标准库,有人使用
my_math.lib
只需要两者都有
my_math.h
和
iostream
,并静态链接
my_math.lib
.结果
.exe
二进制不再需要c/c++运行时。这就是我想实现的学术目的!