Makefile g++ lrt проблема. Не могу найти лрт

Вот мой make-файл.

# The intuitive "all" target will be our default.
.DEFAULT_GOAL := all

# Component dir's to search and invoke make.
# (Try preserving the order of directories)
COM := src_dir1 src_dir2 src_dir3 
PROJ_DIR = $(shell pwd)

EXEC := anonymousforconfidentiality
CC := g++
CFLAGS := -g3

LIBS = `pkg-config --cflags --libs glib-2.0 gio-unix-2.0 bluez protobuf lrt`


.PHONY : clean compile link all

all: | clean compile link

link: 
        $(eval $@_ALLOBJECTS := $(shell find . -name '*.o'))
        $(CC) $(CFLAGS) -o $(EXEC) $($@_ALLOBJECTS) $(LIBS)

compile:
    for COMDIR in $(COM) ; do \
    $(MAKE) INCLUDE_PATH=$(PROJ_DIR) -C $$COMDIR ; \
    done

clean:
    for COMDIR in $(COM) ; do \
    rm -f $$COMDIR/bin/*.o ; \
    done

    rm -f $(EXEC)

Я не могу связать библиотеку 'lrt'. Я широко использую POSIX в режиме реального времени, например, mq_open(), mq_send(), mq_receive() и т. Д. Так что я обязательно должен связать его.

Некоторые из вариантов, которые я пробовал: 1. librt 2. lrt 3. rt 4. librt-dev

Однако я всегда получаю эту ошибку:

Package lrt was not found in the pkg-config search path.
Perhaps you should add the directory containing `lrt.pc'
to the PKG_CONFIG_PATH environment variable
No package 'lrt' found

Я даже пытался вручную установить "librt", но мне не удалось найти пакет. Также не удалось найти его.

Я предполагал, что эта библиотека поставляется в комплекте с нормальным ядром Ubuntu (без патча в реальном времени). Нужна помощь в решении этой проблемы.

1 ответ

Решение

Вы, вероятно, хотите связать rt библиотека. Это сделано с -lrt, Не нужно использовать pkg-config для этого.

Например:

LIBS := `pkg-config --libs glib-2.0 gio-unix-2.0 bluez protobuf` -lrt
Другие вопросы по тегам