在兼容 macOS 和 Linux 的 Windows 上创建静态库
Create a Static Library on Windows Which Is macOS and Linux Compatible
我想在 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 上工作?
这个想法是用同一个编译器编译一次,而不是在 Linux 上使用 MinGW
例如。
这不可能以您想要的简单方式(每个 OS/compiler 一个库文件)实现,因为静态库是编译的二进制代码,不可避免地引用平台细节并且必须(通常)采用编译器特定格式。同一 OS 上的多个编译器之间存在一定程度的兼容性,但永远不会在不同的 OS 上工作。 Mac OS 曾经有胖二进制文件的概念(其中 32 位和 64 位二进制代码彼此相邻),但自从它们移动到专门的 64 位后,这个不再真正相关(尽管它们仍然存在并且仍然可以使用)。
如果您想以二进制形式分发,则需要为您要支持的每个平台 (OS/architecture/toolchain) 组合提供不同的二进制文件。
我想在 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 上工作?
这个想法是用同一个编译器编译一次,而不是在 Linux 上使用 MinGW
例如。
这不可能以您想要的简单方式(每个 OS/compiler 一个库文件)实现,因为静态库是编译的二进制代码,不可避免地引用平台细节并且必须(通常)采用编译器特定格式。同一 OS 上的多个编译器之间存在一定程度的兼容性,但永远不会在不同的 OS 上工作。 Mac OS 曾经有胖二进制文件的概念(其中 32 位和 64 位二进制代码彼此相邻),但自从它们移动到专门的 64 位后,这个不再真正相关(尽管它们仍然存在并且仍然可以使用)。
如果您想以二进制形式分发,则需要为您要支持的每个平台 (OS/architecture/toolchain) 组合提供不同的二进制文件。