Программа не транслируется в Debian 13

Модератор: Модераторы разделов

MiK13
Сообщения: 1299
ОС: Linux Debian

Программа не транслируется в Debian 13

Сообщение MiK13 »

Когда-то (последняя версия исходника июль 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/. А вот на ноутбуке такого файла нет.

Что надо сделать, чтобы программа странслировалась?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5469
ОС: Gentoo

Re: Программа не транслируется в Debian 13

Сообщение /dev/random »

MiK13 писал:
11.05.2026 13:37
Что надо сделать, чтобы программа странслировалась?
Если fltk собирался с cairo, то во флаги компилятора нужно включать флаги cairo. В идеале, fltk-config --cflags --ldflags должен выдать все необходимые флаги, но, к сожалению, не всегда выдаёт. Если флаги для cairo нужны, но отсутствуют, добавьте pkg-config --cflags --libs cairo. В Debian 13 их должен выдавать сам fltk-config, так что в вашем случае вторая команда вряд ли понадобится.
Спасибо сказали:
MiK13
Сообщения: 1299
ОС: Linux Debian

Re: Программа не транслируется в Debian 13

Сообщение MiK13 »

/dev/random писал:
11.05.2026 16:47
MiK13 писал:
11.05.2026 13:37
Что надо сделать, чтобы программа странслировалась?
Если fltk собирался с cairo, то во флаги компилятора нужно включать флаги cairo. В идеале, fltk-config --cflags --ldflags должен выдать все необходимые флаги, но, к сожалению, не всегда выдаёт.
Спасибо. fltk-config --cflags --ldflags мне выдал

Shell

-I/usr/include/cairo -I/usr/include -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/pixman-1
-lfltk -lX11
Я просто добавил в makefile -I/usr/include/cairo и программа стала транслироваться,
А добавлять, как я понимаю, через `fltk-config --cflags --ldflags`?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5469
ОС: Gentoo

Re: Программа не транслируется в Debian 13

Сообщение /dev/random »

MiK13 писал:
13.05.2026 12:09
А добавлять, как я понимаю, через `fltk-config --cflags --ldflags`?
В вашем случае этого должно быть достаточно. Но обычно объявляют переменные в Makefile вроде FLTK_CFLAGS и FLTK_LDFLAGS, заполняемые configure-подобными скриптами или утилитами (либо, если они не используются, присваиванием вроде FLTK_CFLAGS := $(shell fltk-config --cflags)), а потом FLTK_CFLAGS используется при компиляции в ".o", а FLTK_LDFLAGS - при линковке окончательного бинарника.
Спасибо сказали: