Когда-то (последняя версия исходника июль 2021 года) написал программу. С использованием fltk.
Раньше транслировалась нормально (и программа работает).
Сейчас попробовал странслировать:
Shell
g++ -g -Wall -o ed_shm ed_shm.cxx -lfltk
In file included from /usr/include/FL/Fl.H:30,
from ed_shm.cxx:12:
/usr/include/FL/Fl_Cairo.H:40:11: fatal error: cairo.h: Нет такого файла или каталога
40 | # include <cairo.h>
| ^~~~~~~~~
compilation terminated.
make: *** [makefile:66: ed_shm] Ошибка 1
При том, что на ноутбуке, на котором Debian 11, программа странслировалась без проблем (почти, не захотела собираться статическая версия).
Файл cairo.h есть в /usr/include/cairo/. А вот на ноутбуке такого файла нет.
Что надо сделать, чтобы программа странслировалась?
Что надо сделать, чтобы программа странслировалась?
Если fltk собирался с cairo, то во флаги компилятора нужно включать флаги cairo. В идеале, fltk-config --cflags --ldflags должен выдать все необходимые флаги, но, к сожалению, не всегда выдаёт. Если флаги для cairo нужны, но отсутствуют, добавьте pkg-config --cflags --libs cairo. В Debian 13 их должен выдавать сам fltk-config, так что в вашем случае вторая команда вряд ли понадобится.
Что надо сделать, чтобы программа странслировалась?
Если fltk собирался с cairo, то во флаги компилятора нужно включать флаги cairo. В идеале, fltk-config --cflags --ldflags должен выдать все необходимые флаги, но, к сожалению, не всегда выдаёт.
А добавлять, как я понимаю, через `fltk-config --cflags --ldflags`?
В вашем случае этого должно быть достаточно. Но обычно объявляют переменные в Makefile вроде FLTK_CFLAGS и FLTK_LDFLAGS, заполняемые configure-подобными скриптами или утилитами (либо, если они не используются, присваиванием вроде FLTK_CFLAGS := $(shell fltk-config --cflags)), а потом FLTK_CFLAGS используется при компиляции в ".o", а FLTK_LDFLAGS - при линковке окончательного бинарника.