файл mysql.h не найден

Вот почему исходное выражение не сработало.

Из man bash :

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

Итак, расширение скобки - это что-то, сделанное раньше, как чисто текстовое макро-операции, до расширения параметра .

Корпуса представляют собой высоко оптимизированные гибриды между макропроцессорами и более формальными языками программирования. Чтобы оптимизировать типичные варианты использования, язык становится более сложным, и некоторые ограничения принимаются.

Рекомендация

Я бы предложил придерживаться Posix1 функции. Это означает использование for i in <list>; do, если список уже известен, в противном случае используйте while или seq, как в:

#!/bin/sh

limit=4

i=1; while [ $i -le $limit ]; do
  echo $i
  i=$(($i + 1))
done
# Or -----------------------
for i in $(seq 1 $limit); do
  echo $i
done

1. Bash - отличная оболочка, и я использую ее в интерактивном режиме , но я не ставил bash-isms в мои скрипты. Скриптам может понадобиться более быстрая оболочка, более безопасная, более встроенная. Им может потребоваться запустить все, что установлено как / bin / sh, и тогда есть все обычные аргументы pro-standards. Помните shellshock, aka bashdoor?

29
задан Begayim Muratalina 30 January 2013 в 13:04
поделиться

7 ответов

Файл mysql.h из пакета libmysqlclient-dev Ubuntu находится в /usr/include/mysql/mysql.h.

Это не стандартный путь поиска для компиляторов, однако /usr/include.

Обычно вы используете заголовок mysql.h в своем коде так:

#include <mysql/mysql.h>

Если вы не хотите указывать смещение каталога в вашем источнике, вы можете передать -I Установите флажок gcc (если это то, что вы используете), чтобы указать дополнительную директорию поиска include, и тогда вам не нужно будет изменять существующий код.

, например.

gcc -I/usr/include/mysql ...
48
ответ дан Austin Phillips 30 January 2013 в 13:04
поделиться

просто используйте

$ apt-get install libmysqlclient-dev 

, который автоматически извлечет последнюю версию libmysqlclient18-dev

Я видел более старые версии libmysqlclient-dev (например, 15), помещая mysql.h в странные места например / usr / local / include и т. д.

в противном случае просто выполните

$ find /usr/ -name 'mysql.h' 

и укажите путь к папке mysql.h с флагом -I в файле make. Не чисто, но будет работать.

23
ответ дан Waqas 30 January 2013 в 13:04
поделиться

Для тех, кто использует Eclipse IDE.

После установки полного MySQL вместе с клиентом mysql и сервером mysql и любыми библиотеками mysql dev ,

Вы будете Необходимо рассказать Eclipse IDE о следующем

  • Где найти mysql.h
  • Где найти libmysqlclient ] library
  • Путь - ищет для libmysqlclient library

Вот как вы это делаете.

Добавить mysql.h

1 . Компилятор GCC C -> Включает -> Включает пути (-l), затем нажимает + и добавляет путь к вашему mysql.h В моем случае это было / usr / include / mysql

enter image description here

Добавить библиотеку mysqlclient и путь поиска туда, где mysqlclient Библиотека см. шаги 3 и 4 .

[+1141] 2 [+1141]. GCC C Linker -> Библиотеки -> Библиотеки (-l), затем нажмите + и добавьте mysqlcient

enter image description here

3 . GCC C Linker -> Библиотеки -> Путь поиска в библиотеке (-L), затем нажмите + и добавьте путь поиска в mysqlcient . В моем случае это был / usr / lib64 / mysql , потому что я использую 64-битную ОС Linux и 64-битную базу данных MySQL .

В противном случае, если вы используете 32-битную ОС Linux , вы можете обнаружить, что она находится в / usr / lib / mysql

enter image description here

0
ответ дан Joseph Muithi 30 January 2013 в 13:04
поделиться

Вы, вероятно, не указали путь к заголовкам mysql, который можно найти в / usr / include / mysql, на некоторых системах Unix, я думаю. См. этот пост , это может быть полезно.

Кстати, связанный с вопросом того парня выше, о синтетической конфигурации. Можно добавить следующее в ваш ~ / .vimrc:

let b:syntastic_c_cflags = '-I/usr/include/mysql'

, и вы всегда можете проверить вики-страницу разработчиков на github. Наслаждайтесь!

3
ответ дан Community 30 January 2013 в 13:04
поделиться

Я думаю, вы можете попробовать этот gcc -I / usr / include / mysql * .c -L / usr / lib / mysql -lmysqlclient -o *

2
ответ дан CharlesX 30 January 2013 в 13:04
поделиться

Вы должны сообщить компилятору, где находится файл mysql.h. Это можно сделать, указав путь к заголовку перед компиляцией. В IDE у вас есть настройка, где вы можете указать эти пути.

Эта ссылка дает вам больше информации о том, какие опции использовать при компиляции.

К вашей второй проблеме Вам необходимо связать библиотеки. Компоновщик должен знать, где находятся файлы библиотеки, в которых реализованы используемые вами функции mysql.

Эта ссылка дает вам больше информации о том, как связать библиотеки.

2
ответ дан Sunil D S 30 January 2013 в 13:04
поделиться

Для CentOS / RHEL:

yum install mysql-devel -y
14
ответ дан Ryan K 30 January 2013 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: