如何找到 .so 文件的库名称?

How can I find a library name of .so file?

例如,我有libprofiler.so个文件。我怎样才能得到这个共享对象的名称:

getname /usr/lib/libprofiler.so

我想这样做,因为

中的 CMakeLists.txt 需要它
target_link_libraries(MyProject name_of_library)

执行以下步骤 link 现有库到您的目标:

  1. 告诉你你需要哪个库:这里是 profiler。
  2. 构建库的名称。 CMake 并不真正需要这个,但值得知道:Example on Unix/Linux lib + NAME + [.so|.a] [VERSION]。这里:libprofiler.so.
  3. 在你的 CMakeLists.txt:

    find_library(LIB_PROFILER NAMES profiler libprofiler.so libprofiler.so.V123)
    add_executable(MyApp ${SOURCES})
    target_link_libraries(MyApp ${LIB_PROFILER})
    

    上面的代码试图找到一个库并检查以下名称分析器,libprofiler.solibprofiler.so.V123。如果找到,变量 LIB_PROFILER 指向 lib 文件。 使用该变量作为 link 编辑到目标的文件之一。

在您的代码中,您还遗漏了变量周围的 ${}