Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел обеспечивает направляющие линии для того, чтобы они скомпилировали программы C, которые используют API MySQL C.
Вы, возможно, должны определить -I
опция, когда Вы компилируете клиентские
программы, которые используют заголовочные файлы MySQL, так, чтобы компилятор мог найти их. Например, если
заголовочные файлы устанавливаются в /usr/local/mysql/include
, используйте эту
опцию в команде компиляции:
-I/usr/local/mysql/include
Клиенты MySQL должны быть соединены, используя -lmysqlclient
опция в команде ссылки.
Вы, возможно, также должны определить a -L
опция, чтобы сказать компоновщику, где
найти библиотеку. Например, если библиотека устанавливается в /usr/local/mysql/lib
,
используйте эти опции в команде ссылки:
-L/usr/local/mysql/lib -lmysqlclient
Пути могут разойтись в Вашей системе. Корректируйтесь -I
и -L
опции по мере необходимости.
Чтобы сделать более простым скомпилировать программы MySQL на Unix, используйте mysql_config сценарий. См. Раздел 4.7.2, "mysql_config — Параметры экрана для Компиляции Клиентов".
mysql_config выводит на экран опции, необходимые для компиляции или соединения:
shell>mysql_config --cflags
shell>mysql_config --libs
Можно выполнить те команды, чтобы получить надлежащие опции и добавить их вручную к командам ссылки или компиляции. Альтернативно, включайте вывод от mysql_config непосредственно в пределах командных строк, используя обратные галочки:
shell>gcc -c `mysql_config --cflags` progname.c
shell>gcc -o progname progname.o `mysql_config --libs`
Чтобы определить заголовок и расположение файлов библиотеки, используйте услуги, предоставленные Вашей средой разработки.
Чтобы создать клиенты API C на Windows, следует соединиться в клиентской библиотеке C, так же как Windows ws2_32 снабжает сокетом библиотеку и библиотеку безопасности Secur32.
На Windows можно соединить свой код или с динамической или со статической клиентской библиотекой C. Статическую
библиотеку называют mysqlclient.lib
и динамическую библиотеку называют libmysql.dll
. Кроме того, libmysql.lib
статическая
библиотека импорта необходима для того, чтобы пользоваться динамической библиотекой.
Если Вы соединяетесь со статической библиотекой, отказ может произойти, если эти условия не удовлетворяются:
Клиентское приложение должно быть скомпилировано с той же самой версией Visual Studio, используемой, чтобы скомпилировать библиотеку.
Клиентское приложение должно соединить время выполнения C статически при
использовании /MT
опция компилятора.
Если клиентское приложение встраивается в режиме отладки и использует статическую отладку C время выполнения
(/MTd
опция компилятора), это может соединиться с mysqlclient.lib
статическая библиотека, если та библиотека была создана, используя ту же самую опцию. Если клиентское приложение
использует динамическое время выполнения C (/MD
опция, или /MDd
опция в режиме отладки), это должно, должен быть соединен с libmysql.dll
динамическая библиотека. Это не может соединиться со статической клиентской библиотекой.
Страница MSDN, описывающая опции ссылки, может быть найдена здесь:
В MySQL 5.7 клиентская библиотека MySQL включает встроенную поддержку SSL. Является ненужным определить также
-lssl
или -lcrypto
во время ссылки. Выполнение так
может фактически привести к проблемам во времени выполнения.
Если компоновщик не может найти клиентскую библиотеку MySQL, Вы могли бы получить ошибки неопределенной ссылки
для символов, которые запускаются с mysql_
, такой как показанные здесь:
/tmp/ccFKsdPa.o: In function `main':/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init'/tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect'/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error'/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
Следует быть в состоянии решить эту проблему, добавляя -L
в конце Вашей команды ссылки, где dir_path
-lmysqlclientdir_path
представляет путь каталога, где клиентская библиотека располагается. Чтобы определить корректный каталог,
попробуйте эту команду:
shell> mysql_config --libs
Вывод от mysql_config мог бы указать на другие библиотеки, которые должны быть определены на команде ссылки также. Можно включать вывод mysql_config непосредственно в Вашу компиляцию или соединить команду, используя обратные галочки. Например:
shell> gcc -o progname progname.o `mysql_config
--libs`
Если ошибка происходит во время ссылки когда floor
символ неопределен, ссылка к
математической библиотеке, добавляя -lm
до конца строки компиляции/ссылки. Точно так
же, если Вы получаете ошибки неопределенной ссылки для других функций, которые должны существовать на Вашей
системе, такой как connect()
, проверьте страницу руководства на рассматриваемую
функцию, чтобы определить, какие библиотеки следует добавить к команде ссылки.
Если Вы получаете ошибки неопределенной ссылки, такие как следующее для функций, которые не существуют на Вашей системе, это обычно означает, что Ваша клиентская библиотека MySQL была скомпилирована на системе, которая не является на 100 % совместимой с Вашей:
mf_format.o(.text+0x201): undefined reference to `__lxstat'
В этом случае следует загрузить последний MySQL или MySQL исходное распределение Connector/C и скомпилировать клиентскую библиотеку MySQL самостоятельно. См. Раздел 2.9, "Устанавливая MySQL из Источника", и Раздел 21.5, "MySQL, Connector/C".