Во-первых, что не так с использованием только версии Windows?Это прекрасно работает.
Тогда я хотел сделать то же самое, что и вы, и это можно сделать.Обратите внимание, что я не пытался собрать сервер;все, что меня интересовало, - это клиентская библиотека MySQL, чтобы я мог выполнить простую разработку клиента в среде Cygwin.
Итак, что вам нужно сделать, чтобы построить клиентскую библиотеку на Cygwin?
Во-первых, возьмите тарбол.Я использовал mysql-5.5.13.tar.gz
.Распакуйте его в подходящем месте, например /usr/local/src
.
Затем установите систему сборки CMake
через установщик Cygwin.MySQL перешел с GNU Autotools на CMake.CMake - это система мета-сборки.Он генерирует файлы Makefile и другие сценарии сборки для определенных сред сборки.
Конечно, вам также нужны make
и gcc
.
Мне пришлось применить небольшой патчна форуме MySQL один Hiroaki Kawai , чтобы получить материал для компиляции:
Наконец, я переименовал все dtoa () в _dtoa () в mysql / strings / dtoa.c.Функция является статической и должна быть безопасно переименована.
Вы можете выполнить исправление с помощью Perl:
perl -pi.orig -e 's/\bdtoa\b/_dtoa/g' strings/dtoa.c
Затем в верхнем каталоге исходного кода введите:
cmake .
make mysqlclient
Вы получите две статические библиотеки в libmysql/
, libclientlib.a
и libmysqlclient.a
.Я не знаю, что первое (возможно, просто артефакт сборки), но последнее - реальная вещь.
cp /usr/local/src/mysql-5.5/libmysql/libmysqlclient.a /usr/local/lib/
Но это статично, и вам, вероятно, нужна динамическая библиотека.Здесь вам пригодятся документы Cygwin .Итак:
module=mysqlclient
gcc -shared -o cyg${module}.dll \
-Wl,--out-implib=lib${module}.dll.a \
-Wl,--export-all-symbols \
-Wl,--enable-auto-import \
-Wl,--whole-archive lib${module}.a \
-Wl,--no-whole-archive -lz
Это создаст общую библиотеку cygmysqlclient.dll
и библиотеку импорта libmysqlclient.dll.a
.Скопируйте оба к /usr/local/bin
.И это все.
Вот еще еще один вопрос по созданию клиентской библиотеки MySQL на Cygwin .