Почему файлы 'libgnomevfs' находятся в /usr/include/gnome-vfs-2.0?

Большинство приложений, включая сами заголовки 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>
...

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

Я что-то упустил, или это глюк?

3
задан 3 January 2011 в 18:09

2 ответа

Пакет установлен в /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
0
ответ дан 3 January 2011 в 18:09

Приложения не должны ожидать, что заголовки и библиотеки находятся в фиксированном каталоге, но используйте pkg-config для получения необходимых параметров, например: pkg-config --cflags gnome-vfs-2.0

0
ответ дан 3 January 2011 в 18:09

Другие вопросы по тегам:

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