我已经创建了一个库并将其安装在/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)
这工作得很好,并且库存在于我的文件系统中:the library:
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/programs:b/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/..//../x86_64-linux-gnu/5/..//../:/lib/:/usr/lib/
我做错了什么?
想出来了。
库和可执行文件在同一对象(。o)文件中链接。
“Arduino”的内容是关于一个不应该存在的外部变量(复制和粘贴代码问题)。