Соответствующий бит на этой странице
Когда настроечный скрипт запускается без параметров, оставшаяся часть процесса будет использовать /usr/local/include/soci
в качестве пункта назначения по умолчанию для файлов заголовков SOCI и /usr/local/lib
в качестве места назначения по умолчанию для файлы библиотек
Теперь/USR/местные/включить должны быть в вашем умолчанию включить путь (например, попробовать что-то вроде gcc -c -v -x c++ /dev/null -o /dev/null
, чтобы увидеть список вашей установки использования), и поэтому вы можете включить их с помощью
#include <soci/soci.h>
#include <soci/soci-mysql.h>
Затем вам необходимо добавить библиотеки на свой уровень ссылки. Похоже, у вас будут как статические, так и общие версии библиотек. Вам нужно добавить -lsoci_core -lsoci_mysql
на ваш уровень ссылки; однако, если это не сработает, вам также необходимо указать/usr/local/lib в качестве каталога поиска, то есть -L/usr/local/lib -lsoci_core -lsoci_mysql
. (Опять же, возможно, это уже есть, но вы можете увидеть, используя gcc -print-search-dirs
.) Однако проблема в том, что если вы используете общую версию и/usr/local/lib не в вашем пути поиска библиотеки дистрибутивов (см./Etc/ld.so.conf и/или /etc/ld.so.conf.d/*), то он не сможет найти общую библиотеку во время выполнения. Вам понадобится либо жесткий код в пути к библиотеке с помощью переключателя компоновщика -rpath
, либо добавить/usr/local/lib в путь поиска по всей системе, как и раньше, или в вашей среде (переменная LD_LIBRARY_PATH
). Я не уверен, что лучший способ сделать это - я предлагаю -rpath
, чтобы избежать изменения системы в целом, хотя, если вы создаете много библиотек в/usr/local/lib, может иметь смысл добавить Это.
Действительно ли вы выполнили 'make install'? Нет необходимости копировать файлы заголовков в каталог вашего проекта. – chrisaycock
Я выполнил эту команду.Если я не копирую эти файлы, компилятор дает ошибку, говоря, что файлы soci.h и soci-mysql.h не найдены. Я просто копирую следующие примеры из примера в документации: [code] #include "soci.h" #include "soci-mysql.h" [/ code], но это не сработало, компилятор сказал, что эти файлы didn Нет, поэтому я попытался скопировать их из пакета soci. – NeDark