【发布时间】:2017-04-10 23:34:17
【问题描述】:
我创建了一个库并将其安装在 /usr/lib 中(使用 cmake),例如:
set(CMAKE_INSTALL_PREFIX /usr/)
target_link_libraries(ssd1306)
set_target_properties(ssd1306 PROPERTIES VERSION 1.0.0 SOVERSION 1 )
install(TARGETS ssd1306 DESTINATION lib)
install(FILES ${SSD1306_HEADERS} DESTINATION include)
这很好,并且该库存在于我的文件系统中: 图书馆:
ls -l /usr/lib/libssd1306*
/usr/lib/libssd1306.so -> libssd1306.so.1
/usr/lib/libssd1306.so.1 -> libssd1306.so.1.0.0
/usr/lib/libssd1306.so.1.0.0
还有标题:
ls -l /usr/include/ssd1306.h
/usr/include/ssd1306.h
然后我编写了一个使用该库的程序(再次使用 cmake):
target_link_libraries(ssd1306-info libssd1306)
但由于某种原因,它不会在编译时链接到我的库:
/usr/bin/ld: 找不到 -llibssd1306
找到头文件并创建目标文件,但链接失败。
当然 /usr/lib/ 在 g++ 搜索路径中:
g++ -print-search-dirs
安装:/usr/lib/gcc/x86_64-linux-gnu/5/ 程序:=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/ usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../ ../../x86_64-linux-gnu/bin/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../ x86_64-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/bin/ 库:=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux- gnu/lib/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/lib/x86_64- linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/lib/../lib/:/usr/lib /gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../ ../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/5 /:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/5/:/usr/lib/x86_64-linux-gnu/:/usr/ lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/lib/:/usr/lib/gcc /x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/
我做错了什么?
【问题讨论】:
-
尝试在详细模式下运行
make以查看它如何尝试构建您的程序。您可以通过在运行make时添加VERBOSE=1参数来实现。 -
我认为您需要通过运行 ldconfig 来更新库缓存。
-
不应该只有
target_link_libraries(ssd1306-info ssd1306)吗? -
您是否遇到了 32 位与 64 位库的问题?
-
您是否仔细检查了所有这些符号链接?