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

问题描述 投票:0回答:1

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

我正在使用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

c compilation cross-platform static-libraries cross-compiling
1个回答
1
投票

由于静态库是编译的二进制代码,因此不可能以您想要的简单方式(每个OS /编译器一个库文件)实现这一点,二进制代码不可避免地引用平台细节,并且必须(通常)采用编译器特定格式。在同一操作系统上的几个编译器之间存在某种程度的兼容性,但从来没有在不同的操作系统上工作。 Mac OS曾经有过胖二进制文件的概念(其中32位和64位二进制代码彼此相邻),但由于它们只移动到64位,因此不再具有相关性(尽管他们仍然存在,仍然可以使用)。

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

© www.soinside.com 2019 - 2024. All rights reserved.