Большинство приложений, включая сами заголовки gnomevfs, ожидают, что файлы будут в /usr/include/libgnomevfs
, , но в Ubuntu они есть в /usr/include/gnome-vfs-2.0/libgnomevfs
.
Почему? Пакет, на который я ссылаюсь, называется libgnomevfs2 .
Внутри / usr / include / gnome-vfs-2.0 / libgnomevfs / gnome-vfs.h` мы находим:
#include <libgnomevfs/gnome-vfs-acl.h>
#include <libgnomevfs/gnome-vfs-address.h>
#include <libgnomevfs/gnome-vfs-async-ops.h>
#include <libgnomevfs/gnome-vfs-cancellation.h>
...
Это означает, что даже сами заголовки ожидают, что файлы находятся в этом месте - и ничего, что включает этот файл, не будет работать.
Я что-то упустил, или это глюк?
Пакет установлен в /usr/include/gnome-vfs-2.0
, так что он может сосуществовать с другими версиями gnome-vfs (например, представьте, что также имеется /usr/include/gnome-vfs-1.0
доступно). Когда пакет должен быть собран на основе версии gnome-vfs, он должен запросить pkg-config
, чтобы найти место установки. (Обычно это делается в течение configure
для программного обеспечения, подлежащего компиляции.) Например:
pkg-config --cflags gnome-vfs-2.0
-pthread -DORBIT2=1 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
Обратите внимание на использование всех флагов -I
, включая -I/usr/include/gnome-vfs-2.0
. Вывод вызова pkg-config --cflags
обычно добавляется в переменную окружения CFLAGS
сборки. Учитывая часть -I
, компилятор сможет найти полный путь к заголовкам, так как он начнет искать в /usr/include/gnome-vfs-2.0
, а затем прикрепит путь к заголовку libgnomevfs/gnome-vfs-acl.h
, который разрешит правильный полный путь файла: /usr/include/gnome-vfs-2.0/libgnomevfs/gnome-vfs-acl.h
.
Итак, если программное обеспечение еще не использует pkg-config
, вы можете попытаться передать переменные (cflags
и libs
) в вызов configure
:
CFLAGS=`pkg-config --cflags gnome-vfs-2.0` LDFLAGS=`pkg-config --libs gnome-vfs-2.0` ./configure
Приложения не должны ожидать, что заголовки и библиотеки находятся в фиксированном каталоге, но используйте pkg-config для получения необходимых параметров, например: pkg-config --cflags gnome-vfs-2.0