Makefile G ++ LRT问题。找不到LRT

时间:2019-07-18 12:13:57

标签: gcc makefile g++ posix librt

这是我的文件。

# 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.诽谤 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”,但找不到该软件包。 apt-get也找不到它。

我以为这个库预装了Ubuntu普通内核(没有实时补丁)。需要解决此问题的帮助。

1 个答案:

答案 0 :(得分:2)

您可能想链接rt库。这是通过-lrt完成的。无需使用pkg-config

例如:

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