我创建了一个库,并将其安装在/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/lib 1306*
/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/ is在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/
我做错什么了?
发布于 2016-11-27 05:32:11
弄明白了。
在同一个对象(.o)文件中链接的库和可执行文件。
“arduino”是关于一个不应该存在的外部变量(复制和粘贴代码问题)。
https://stackoverflow.com/questions/40824088
复制相似问题