MySQL включает файлы от Cygwin GCC - PullRequest
1 голос
/ 16 июля 2011

Как я могу настроить MySQL таким образом, чтобы в моих сборках Cygwin gcc C ++ я мог иметь заголовочные файлы и библиотеки?

Я видел описания в Интернете, но, похоже, это относится к вещам, которые я не делаю 'Например: configure . (Я подозреваю, что MySQL изменил их систему сборки).

Возможно использование более старой версии, но я бы предпочел иметь те же версии, что и наLinux.

У меня установлена ​​полная версия Cygwin.

1 Ответ

2 голосов
/ 16 июля 2011

Во-первых, что не так с использованием только версии 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...