【问题标题】:How to link in -lpthread -lm -ldl in CMake如何在 CMake 中链接 -lpthread -lm -ldl
【发布时间】:2016-07-21 11:23:40
【问题描述】:

我正在尝试使用 cmake 为我的代码链接 intel mkl。从 mkl 链接顾问,我应该通过以下方式链接库:

 -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl

然后我编写一个模块来在 Findmkl.cmake 中查找mkl_intel_lp64mkl_coremkl_sequential

find_library(lp64_libraries NAMES mkl_intel_lp64 PATHS "${mkl_path}/lib/intel64")
find_library(core_libraries NAMES mkl_core PATHS "${mkl_path}/lib/intel64")
find_library(sequential_libraries NAMES mkl_sequential PATHS "${mkl_path}/lib/intel64")

然后我可以链接这些库。虽然我不知道如何链接-lpthread -lm -ldl,但我不确定这个链接是什么意思,我在 $MKLROOT/lib/intel64 中找不到任何 libpthread.a。

【问题讨论】:

    标签: cmake intel-mkl


    【解决方案1】:

    这些库应该存在于每个 Unix 系统上。

    所以你可以添加:

    target_link_libraries(target_name m dl pthread)
    

    【讨论】:

    • 非常感谢,大卫。我试过这个,它有效。虽然我在实践中需要更多。我的代码有很多库,我使用set(lib_all ${mkl_libraries} ${lib_all})添加mkl,使用set(lib_all ${gmp_libraries} ${lib_all})链接gmp,链接很多库后,然后使用:target_link_libraries(target_name ${lib_all})。我更喜欢将 m dl pthread 放入 mkl_libraries 而不是 target_link_libraries(target_name ${lib_all} m dl pthread)。有没有办法将m dl pthread 添加到 mkl_libraries?
    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2020-11-19
    相关资源
    最近更新 更多