Can't access cairo.h

гve installed cairo-1.4.14 using make install, but after trying to составьте my code:

fatal error: cairo.h: No such file or directory
 #include <cairo.h>
                   ^

I составил using this:

g++ screenshot.cpp

I installed 3 packages from this output, but still the same problem:

apt-file search --regex /cairo.h$
libcairo2-dev: /usr/include/cairo/cairo.h
r-cran-rgtk2: /usr/lib/R/site-library/RGtk2/include/RGtk2/cairo.h
thunderbird-dev: /usr/include/thunderbird/cairo/cairo.h

Info about system:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Output of pkg-config --libs --cflags cairo :

-I/usr/local/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  -L/usr/local/lib -lcairo
7
задан 6 December 2015 в 04:15

2 ответа

Если у Вас нет потребности в Каирской версии, отличающейся от того, что предоставляет Ubuntu, следуйте ответу A.B.'s.

Если Вы хотите использовать Каир, Вы установили вручную, сделайте следующим образом.

Проблема состоит в том, что libcairo устанавливает cairo.h кому: /usr/local/include/cairo/ и нет /usr/local/include/ (т.е. один каталог глубже)

Необходимо передать этот каталог компилятору с -I переключатель.

g++ -I/usr/local/include/cairo/ -o screenshot screenshot.cpp

Вы, вероятно, столкнетесь с ошибкой компоновщика затем - компоновщик не знает для поиска libcairo и ошибок на неразрешенных символах. Поэтому давайте дадим g++ еще несколько параметров.

g++ -I/usr/local/include/cairo/ -L/usr/local/lib -o screenshot screenshot.cpp -lcairo

-lcairo говорит компоновщику искать названную библиотеку cairo и -L/usr/local/lib дает компоновщику дополнительный каталог для поиска от.

Обратите внимание, что параметр заказывает вопросы с -l - это должно быть помещено после исходных или объектных файлов. [1] (В этом случае, после screenshot.cpp)

Это должно быть достаточно для компиляции Вашего двоичного файла.


pkg-config инструмент для автоматизации этих вещей. Это дает Вам параметры командной строки, необходимые для компиляции программы, пользующейся определенной библиотекой. Я думаю, что это часто промахивается и заканчивает тем, что связалось против нескольких библиотек, которые не на самом деле необходимы. Ручной путь лучше в том вопросе.


[1] Или таким образом, я думаю. Я честно не могу схватить то, что та страница руководства GCC пытается сказать.

5
ответ дан 23 November 2019 в 06:18

apt-file search дает информацию

$ apt-file search --regex  /cairo.h$
libcairo2-dev: /usr/include/cairo/cairo.h

Из-за этого выполните

sudo apt install libcairo2-dev

и скомпилируйте с

g++ screenshot.cpp $(pkg-config --libs --cflags cairo)
8
ответ дан 23 November 2019 в 06:18

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

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