【问题标题】:How to link jemalloc shared library using cmake如何使用 cmake 链接 jemalloc 共享库
【发布时间】:2018-03-04 03:13:46
【问题描述】:

我试图在构建时将 jemalloc 库链接到我的应用程序中,并将其用作通用实现。根据https://github.com/jemalloc/jemalloc/wiki/Getting-Started,要使用的链接标志是:

-L`jemalloc-config --libdir` -Wl,-rpath,`jemalloc-config --libdir` -ljemalloc `jemalloc-config --libs`

所以我做了以下 CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12.2)
project(widget)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_executable(widget ${SOURCES})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L`jemalloc-config --libdir` -Wl,-rpath,`jemalloc-config --libdir` -ljemalloc `jemalloc-config --libs`")

但是当我执行make 时,我得到以下错误

Linking CXX executable widget
c++: error: `jemalloc-config: No such file or directory
c++: error: unrecognized command line option ‘--libdir`’
c++: error: unrecognized command line option ‘--libdir`’
c++: error: unrecognized command line option ‘--libs`’
make[2]: *** [widget] Error 1
make[1]: *** [CMakeFiles/widget.dir/all] Error 2

【问题讨论】:

    标签: makefile compiler-errors cmake linker jemalloc


    【解决方案1】:

    对于子孙后代,这仍然是 Google 上的首批链接之一。

    Jemalloc 自带 pkg-config 设置,可以这样使用:

    find_package(PkgConfig REQUIRED)
    pkg_check_modules (JEMALLOC jemalloc)
    
    pkg_search_module(JEMALLOC REQUIRED jemalloc)
    include_directories(${JEMALLOC_INCLUDE_DIRS})
    
    target_link_libraries(your_target_name ${JEMALLOC_LIBRARIES})
    

    【讨论】:

      【解决方案2】:

      execute_process() 命令是你的朋友。使用它来运行jemalloc-config 可执行文件,然后将其输出放入CMake 变量中。

      【讨论】:

        【解决方案3】:
        1. 找到jemalloc的root_dir。我的是 /Users/lion/homebrew/Cellar/jemalloc/5.2.1_1/lib/ (我在 macOS 上通过brew 安装jemalloc
        2. 链接(软链接)它的所有库到你的本地库ln -s /Users/lion/homebrew/Cellar/jemalloc/5.2.1_1/lib/* /usr/local/lib

        然后就可以了!

        【讨论】:

          猜你喜欢
          • 2017-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-02
          • 2021-07-25
          • 2013-10-09
          相关资源
          最近更新 更多