代码之家  ›  专栏  ›  技术社区  ›  Royi

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

  •  0
  • Royi  · 技术社区  · 7 年前

    我想在Windows中使用MSVC/IXX生成一个静态库文件,它与macOS和Linux兼容。

    我在用 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上工作吗?

    这个想法是用同一个编译器编译一次,而不是使用 MinGW 例如在Linux上。

    1 回复  |  直到 7 年前
        1
  •  1
  •   rubenvb    7 年前

    这不可能以您想要的简单方式实现(每个OS/编译器有一个库文件),因为静态库是编译的二进制代码,这不可避免地参考了平台的具体情况,并且(通常)必须采用特定于编译器的格式。同一操作系统上的多个编译器之间存在一定程度的兼容性,但这永远不会在不同的操作系统之间工作。Mac OS过去有fat二进制文件的概念(其中32位和64位二进制代码相邻),但由于它们移到了专用的64位,这就不再是真正相关的了(尽管它们仍然存在并且仍然可以使用)。

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