【问题标题】:How can I find a library name of .so file?如何找到 .so 文件的库名称?
【发布时间】:2016-10-31 13:00:38
【问题描述】:
例如,我有libprofiler.so 文件。我怎样才能像这样获得这个共享对象的名称:
getname /usr/lib/libprofiler.so
我想这样做是因为CMakeLists.txt中需要它
target_link_libraries(MyProject name_of_library)
【问题讨论】:
标签:
cmake
shared-libraries
static-linking
【解决方案1】:
执行以下步骤将现有库链接到您的目标:
- 告知您需要哪个库:此处为 profiler。
- 构建库的名称。 CMake 并不真正需要这个,但值得知道:Unix/Linux lib + NAME + [.so|.a] [VERSION] 上的示例。在这里:
libprofiler.so。
-
在您的 CMakeLists.txt 中:
find_library(LIB_PROFILER NAMES profiler libprofiler.so libprofiler.so.V123)
add_executable(MyApp ${SOURCES})
target_link_libraries(MyApp ${LIB_PROFILER})
上面的代码尝试查找一个库并检查以下名称分析器libprofiler.so 和libprofiler.so.V123。如果找到,变量LIB_PROFILER 指向lib 文件。
将变量用作链接到目标的文件之一。
在您的代码中,您还错过了变量周围的${}。