Создайте статическую библиотеку в Windows, совместимую с macOS и Linux - PullRequest
0 голосов
/ 19 апреля 2019

Я хотел бы создать файл статической библиотеки в 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 Ответ

1 голос
/ 19 апреля 2019

Это невозможно сделать простым способом (один файл библиотеки для каждой ОС / компилятора) из-за того, что статические библиотеки представляют собой скомпилированный двоичный код, который неизбежно ссылается на специфику платформы и должен (в общем случае) находиться в компиляторе.конкретный формат.Некоторый уровень совместимости существует между несколькими компиляторами в одной и той же ОС, но никогда не будет работать в разных ОС.В Mac OS раньше использовалась концепция толстых двоичных файлов (в которой 32-разрядный и 64-разрядный двоичный код находились рядом друг с другом), но поскольку они перешли исключительно на 64-разрядные, это уже не актуально (хотяони все еще существуют и могут использоваться).

Если вы хотите распространять в двоичном виде, вам нужно будет предоставить различные двоичные файлы для каждой комбинации платформы (ОС / архитектура / набор инструментов), которую вы хотите поддерживать.

...