gcc не будет компилировать и запускать библиотеки MySQL C - PullRequest
7 голосов
/ 03 августа 2010
#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());
}

~ $ gcc -o mysql-test MySQL-Test.c

я пытаюсь выполнить эту тестовую программу с терминала, но получаю следующее сообщение об ошибке:

/ tmp / cceEmI0I.o: в функции main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info '

что не так? моя система Ubuntu

Ответы [ 7 ]

14 голосов
/ 03 августа 2010

MySQL поставляется со специальным скриптом, который называется mysql_config.Он предоставляет вам полезную информацию для компиляции вашего клиента MySQL и подключения его к серверу базы данных MySQL.Опция

Pass --libs - библиотеки и опции, необходимые для связи с клиентской библиотекой MySQL.

$ mysql_config --libs

Типичный вывод:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto

Теперь вы можете добавить этона вашу компиляцию / ссылку:

gcc -o mysql-test MySQL-Test.c $(mysql_config --libs)
4 голосов
/ 03 августа 2010

Вам нужно gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz

Замените -L/usr/local/mysql/lib на то место, где находится ваша клиентская библиотека (если ее еще нет в вашем libpath)

См. Инструкции MySql для построения клиентов .

3 голосов
/ 21 августа 2014

Для использования Netbeans в Linux

Откройте файл make (MakeFile) и добавьте следующие строки

# These are the flags that gcc requires in order to link correctly against our installed 
# client packages
MYSQL_LIBS := $(shell mysql_config --libs)

прямо под блоком Environment.

Затем щелкните правой кнопкой мыши узел вашего проекта, выберите «Свойства», «Построить» и добавьте $(MYSQL_LIBS) к параметру «Дополнительные параметры».

2 голосов
/ 03 августа 2010

Вы забыли связать с библиотекой MySQL. Попробуйте добавить -lmysql в строку компиляции.

См. http://www.adp -gmbh.ch / cpp / gcc / create_lib.html для получения дополнительной информации.

2 голосов
/ 03 августа 2010

Это не ошибка компиляции. Это ошибка ссылки.

Добавьте библиотеку mysql для создания вашего исполняемого файла с параметром -lmysql.

2 голосов
/ 03 августа 2010

Вы не ссылаетесь на библиотеки. Использование: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c См. здесь для получения дополнительной информации о связывании с gcc.

1 голос
/ 04 ноября 2013

Может быть поздно, но у меня сработало
Если вы используете IDE, вам следует связать библиотеку с вашим проектом.
Я использую CodeBlocks на Ubuntu 12.4 64x. Для того, чтобы связать библиотеку, вы должны перейти к Project -> Build options -> settings linker и добавить библиотеку. это мой путь к библиотеке: /usr/lib/x86_64-linux-gnu/libmysqlclient.so

Надеюсь быть полезным ...

...