Makefile g++ lrt problem. Cannot find lrt

陌路散爱 提交于 2019-12-11 15:51:28

问题


Here is my makefile.

# 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)

I am not able to link the library 'lrt'. I make extensive use of POSIX real time such as mq_open(), mq_send(), mq_receive() etc... So it is imperative I link it.

Some of the variations I tried: 1. librt 2. lrt 3. rt 4. librt-dev

However I always get this error:

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

I even tried to manually install "librt" but was unsuccessful in locating the package. Nor did apt-get find it.

I was assuming this lib comes prepackaged with Ubuntu normal kernel (no real time patch). Need help with resolution of this issue.


回答1:


You probably want to link rt library. This is done with -lrt. No need to use pkg-config for it.

E.g.:

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


来源:https://stackoverflow.com/questions/57094210/makefile-g-lrt-problem-cannot-find-lrt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!