在兼容macOS和Linux的Windows上创建静态库

时间:2019-04-19 08:14:02

标签: c compilation cross-platform static-libraries cross-compiling

我想使用兼容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

1 个答案:

答案 0 :(得分:1)

这不可能以您想要的简单方式实现(每个OS /编译器一个库文件),原因是静态库是编译后的二进制代码,它不可避免地引用了平台细节,并且通常必须在编译器中具体格式。同一操作系统上的多个编译器之间存在某种程度的兼容性,但是永远不会在不同的操作系统上工作。 Mac OS曾经有胖二进制文件的概念(32位和64位二进制代码都位于彼此相邻的位置),但是由于它们移到了唯一的64位,因此这不再是真正有意义的(尽管它们仍然存在并且仍然可以使用)。

如果要以二进制形式分发,则需要为要支持的每个平台(OS /体系结构/工具链)组合提供不同的二进制文件。