Компиляция библиотеки Linux для Mingw - PullRequest
1 голос
/ 22 декабря 2010

Я использую библиотеку сокетов для C ++. Некоторая другая информация: 32-битный набор инструментов Linux, Codelite и GCC. Я хочу быть в состоянии скомпилировать мою программу для Windows, используя Windows Codelite. Используемая мной библиотека сокетов не имеет библиотеки mingw32, но имеет открытый исходный код. Итак, как я могу сделать сборку mingw32 для библиотеки сокетов, чтобы я мог сделать сборку Windows, используя предоставленный источник?

Ответы [ 3 ]

1 голос
/ 22 декабря 2010

Большинство библиотек Linux с открытым исходным кодом создаются с помощью системы make build (хотя есть и другие, такие как jam и т. Д., И пользовательские сценарии для сборки). MinGW поставляется с утилитой make, это mingw32-make.exe . Может быть возможно (если вам повезет) просто перестроить вашу библиотеку, сделав ее в Windows.

Более обычный сценарий заключается в том, что вам нужно будет настроить проект, прежде чем вы сможете его построить. Оболочка Windows не поддерживает требования сценариев, необходимые для настройки, но есть еще одна часть проекта MinGW, которая называется MSYS . Если вы установите msys и все необходимые инструменты, необходимые для этого, вы сможете ./ сконфигурировать ваш проект перед запуском make.

Конечно, вышеописанное будет работать, только если библиотека написана как переносимая. Между реализацией сокетов linux (sys / socket.h) и реализацией windows (winsock2.h) есть некоторые существенные различия. Возможно, вам придется отредактировать фрагменты кода, чтобы убедиться, что он версионирован для платформы правильно (или что любые необходимые зависимости также созданы для Windows).

Кроме того, существует вероятность того, что библиотека уже может быть собрана для Windows, но с использованием другого компилятора, такого как MSVC, который создает файлы .lib и .dll. Для Mingw требуются файлы .a для библиотек, но умной возможностью является возможность напрямую ссылаться на .dll без необходимости в библиотеке импорта, поэтому вы часто можете использовать существующую библиотеку Windows, которая не была построена против Mingw (хотя это Помогите для статического связывания). Существует также инструмент dlltool , который может конвертировать .lib в .a.

Если вы дадите подробные сведения о конкретной библиотеке, с которой вы работаете, возможно, я смогу выбрать для вас, что нужно сделать, чтобы запустить ее на Win.

0 голосов
/ 22 декабря 2010

Прежде всего вам нужно убедиться, что вы не включили какие-либо специфичные для Linux библиотеки.

0 голосов
/ 22 декабря 2010

Вы переносите его на новую платформу.:)

Вам повезло, что это с открытым исходным кодом, потому что тогда было бы практически невозможно его портировать (вам нужно заплатить $$$, чтобы получить копию кода для конкретной лицензииили переписать весь продукт).

Наслаждайтесь.

В качестве альтернативы, у них вполне может быть порт ... Проверьте документацию по используемой библиотеке.

...