标签: librt

librt.so 是什么?如何直接使用?

我发现有些图书馆链接到librt.so,而其他图书馆则没有。我想知道它是在什么情况下链接的。

我从来没有直接使用过这个库。有没有演示显示它的直接用法?有没有相关的头文件?

librt

8
推荐指数
2
解决办法
1万
查看次数

使用 CMake 未定义对“shm_open”的引用

我在 Ubuntu 14.04 下使用 CMake 来配置我的项目。我需要使用第三方库(比如 stuff.so)。在 CMakeLists.txt 中,我使用 TARGET_LINK_LIBRARIES 链接内容库。但是,我收到一个错误:

DIR_TO_LIB/stuff.so:-1: 错误: 未定义对 `shm_open' 的引用

我尝试将这些标志放入 CMakeLists.txt 但它不起作用:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lrt")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lrt")
Run Code Online (Sandbox Code Playgroud)

一篇文章(链接)说 -lrt 应该作为 g++ 的最后一个参数。在我使用 CMake 的情况下,我该怎么做?

更新:我添加了

SET (CMAKE_VERBOSE_MAKEFILE 1)
Run Code Online (Sandbox Code Playgroud)

我发现 -lrt 不是最后一个(即使我把它放在目标链接的末尾)。请参阅此链接以获取编译输出。

从编译输出中可以看到,opencv 有一些链接标志。我不明白为什么会发生这种情况,因为我首先在 TARGET_LINK_LIBRARIES 中链接 OpenCV 库。CMake 如何处理这些链接顺序?

另请参阅我的CMakeLists.txt

谢谢。

c++ g++ cmake librt

6
推荐指数
1
解决办法
7398
查看次数

librt和libeio对于异步I/O有什么区别,为什么我会选择其中一个呢?

真的想把更多的东西放在身上来解释这个问题......但标题真的涵盖了这一切.据我所知,librt更"官方"(它是标准的一部分libc?),但我也记得看到Node.js使用libeio.我应该花更多的时间研究一下?便携性怎么样?他们的API有何不同?

(如果有一个代表≥1,500的人可以在这个问题上添加标签"libeio"和"librt",我会很感激,因为我不能.)

c io asynchronous librt

5
推荐指数
1
解决办法
1790
查看次数

为什么链接到librt在g ++和clang之间交换性能?

我刚从@ tony-d 找到了这个答案,用一个基准代码来测试虚函数调用开销.我查了基准使用g++:

$ g++ -O2 -o vdt vdt.cpp -lrt
$ ./vdt
virtual dispatch: 150000000 0.128562
switched: 150000000 0.0803207
overheads: 150000000 0.0543323
...
Run Code Online (Sandbox Code Playgroud)

我的表现更好(他的比例约为2),但后来我查了一下clang:

$ clang++-3.7 -O2 -o vdt vdt.cpp -lrt
$ ./vdt
virtual dispatch: 150000000 0.462368
switched: 150000000 0.0569544
overheads: 150000000 0.0509332
...
Run Code Online (Sandbox Code Playgroud)

现在这个比例上升到70左右!

然后我注意到了-lrt命令行参数,经过一些谷歌搜索后,librt我尝试了没有它g++clang:

$ g++ -O2 -o vdt vdt.cpp
$ ./vdt
virtual dispatch: 150000000 0.4661
switched: 150000000 0.0815865
overheads: 150000000 0.0543611
...
$ …
Run Code Online (Sandbox Code Playgroud)

c++ benchmarking librt

5
推荐指数
1
解决办法
270
查看次数

Ndk工具链抱怨缺少lrt选项

在NDK-build上获得以下错误

/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x /../../../../ arm-linux -androideabi/bin/ld:错误:找不到-lrt

我更新了Android.mk以获取lrt的绝对路径,但问题没有解决

我的Android.mk就在这里

LOCAL_PATH := $(call my-dir)    
THIS_PATH  := $(LOCAL_PATH)    
include $(CLEAR_VARS)    
OPENCV_CAMERA_MODULES   := off    
OPENCV_INSTALL_MODULES  := off    
OPENCV_LIB_TYPE         := STATIC    
OPENCV_ANDROID_SDK_HOME := /home/Ravikant/Desktop/OpenCV-android-sdk    
include $(OPENCV_ANDROID_SDK_HOME)/sdk/native/jni/OpenCV.mk    
OPENCV_INCLUDE_DIR        := $(OPENCV_ANDROID_SDK_HOME)/sdk/native/jni/include    
OPENCV_LIBS_DIR           := $(OPENCV_ANDROID_SDK_HOME)/sdk/native/libs/$(TARGET_ARCH_ABI)  
OPENCV_3RD_PARTY_LIBS_DIR := $(OPENCV_ANDROID_SDK_HOME)/sdk/native/3rdparty/libs/$(TARGET_ARCH_ABI)

LOCAL_MODULE    := myModule    
LOCAL_CFLAGS := -w    
LOCAL_SRC_FILES := searchPath.cpp auxiliary.cpp      
LOCAL_LDFLAGS := -fopenmp -llog -ljnigraphics -L$(OPENCV_LIBS_DIR)    
LOCAL_SHARED_LIBRARIES += prebuilt_for_opencv_java    
    -lopencv_core         \    
    -lopencv_highgui      \    
    -lopencv_objdetect    \    
    -lopencv_imgproc      \    
    -lopencv_imgcodecs    \    
    -lopencv_photo    

    include $(BUILD_SHARED_LIBRARY)



LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := prebuilt_for_opencv_java …
Run Code Online (Sandbox Code Playgroud)

android-ndk librt

3
推荐指数
1
解决办法
373
查看次数

标签 统计

librt ×5

c++ ×2

android-ndk ×1

asynchronous ×1

benchmarking ×1

c ×1

cmake ×1

g++ ×1

io ×1