связывание статических библиотек Linux в Windows с Cygwin - PullRequest
1 голос
/ 14 апреля 2010

У меня есть двоичная статическая библиотека libfoo.a, скомпилированная для 32-битной машины Linux. Я хочу скомпилировать его с моим проектом win32, скомпилированным с cygwin.

Это возможно? Это представляется возможным, поскольку все объектные файлы в архиве должны быть в стандартном формате ELF.

Однако я продолжаю получать ошибки связывания функций, которые nm находит в libfoo.a. Когда я создал заглушку libfoo.a с некоторыми пустыми функциями с такими же именами, что и в libfoo.a, я больше не получал ошибок связывания этих функций.

Это вообще возможно или я что-то упустил? В любом случае, как я могу устранить эту проблему?

1 Ответ

0 голосов
/ 14 апреля 2010

Даже если вы преуспеете в связывании, вы не избежите несовместимости кода, созданного на разных платформах. Например, заголовки (glibc и другие) там разные. Для обеспечения совместимости дополнительные символы, аналогичные искажениям, по-видимому, используются для символов, экспортируемых объектными файлами.

Я столкнулся с проблемой, аналогичной вашей, когда пытался связать вместе объектные файлы, скомпилированные для другой архитектуры процессора - nm показал, что все необходимые функции присутствуют, но компоновщик не поверил.

...