我想使用兼容macOS和Linux的MSVC / IXX在Windows中生成静态库文件。
我正在使用C
(比方说C99
),这些功能确实很简单。例如:
void AddArray(float* mA, float* mB, float* mC, int numElements){
int ii;
for(ii = 0; ii < numElements; ii++){
mC[ii] = mA[ii] + mB[ii];
}
}
是否有一种方法只能在Windows上构建一次库并在任何地方使用它?
如果不是在Windows上,可以在Linux上完成并在Windows和macOS上运行吗?
这个想法是使用相同的编译器编译一次,例如在Linux上不使用MinGW
。
答案 0 :(得分:1)
这不可能以您想要的简单方式实现(每个OS /编译器一个库文件),原因是静态库是编译后的二进制代码,它不可避免地引用了平台细节,并且通常必须在编译器中具体格式。同一操作系统上的多个编译器之间存在某种程度的兼容性,但是永远不会在不同的操作系统上工作。 Mac OS曾经有胖二进制文件的概念(32位和64位二进制代码都位于彼此相邻的位置),但是由于它们移到了唯一的64位,因此这不再是真正有意义的(尽管它们仍然存在并且仍然可以使用)。
如果要以二进制形式分发,则需要为要支持的每个平台(OS /体系结构/工具链)组合提供不同的二进制文件。