27.6.1 Компиляция программ с libmysqld
В предварительно скомпилированных двоичных дистрибутивах MySQL, которые включают libmysqld, встроенную библиотеку сервера, MySQL строит библиотеку с использованием соответствующего компилятора поставщика, если он есть.
Чтобы получить libmysqld библиотеку, если вы сами собираете MySQL из исходного кода, вы должны настроить MySQL с опцией -DWITH_EMBEDDED_SERVER=1. См. Раздел 2.8.7, «Параметры конфигурации исходного кода MySQL».
При компоновке вашей программы с libmysqld, вы также должны включить специфичные для системы pthread библиотеки и некоторые библиотеки, используемые сервером MySQL. Полный список библиотек можно получить, выполнив mysql_config --libmysqld-libs.
Должны использоваться правильные флаги для компиляции и компоновки многопоточной программы, даже если вы не вызываете непосредственно какие-либо многопоточные функции в вашем коде.
Для компиляции программы на C, чтобы включить необходимые файлы для встраивания библиотеки сервера MySQL в исполняемый вариант программы, компилятору необходимо знать, где найти различные файлы, и получить инструкции по компиляции программы. Следующий пример показывает, как программу можно скомпилировать из командной строки, предполагая, что вы используете gcc, компилятор GNU C:
gcc mysql_test.c -o mysql_test \
`/usr/local/mysql/bin/mysql_config --include --libmysqld-libs`
Непосредственно после команды gcc следует имя исходного файла программы на C. После него указывается опция -o, чтобы указать, что следующее имя файла — это имя, которое компилятор должен дать выходному файлу, скомпилированной программе. Следующая строка кода сообщает компилятору получить расположение файлов заголовков и библиотек, а также другие настройки для системы, на которой происходит компиляция. Команда mysql_config находится в обратных кавычках, а не в одинарных.
На некоторых платформах, не использующих gcc, встроенная библиотека зависит от библиотек выполнения C++, а компоновка против встроенной библиотеки может привести к ошибкам «отсутствующий символ». Для решения этой проблемы используйте компилятор C++ или явно укажите необходимые библиотеки в командной строке компоновки.
© 2025 Oracle
Licensed under the GPLv2 License.