g ++不会链接到/ usr / lib /中的库

时间:2016-11-26 23:07:42

标签: c++ cmake

我已经创建了一个库并将其安装在/ 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 /斌/ x86_64的-Linux的GNU /:/ usr / lib中/ GCC / x86_64的-Linux的GNU / 5 /../../../../ x86_64的-Linux的GNU /斌/ libraries:= / 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中/

我做错了什么?

1 个答案:

答案 0 :(得分:0)

想出来。

库和可执行文件都链接在同一个对象(.o)文件中。

' arduino'东西是一个外部变量,不应该存在(复制和粘贴代码问题)。