假设我有一个共享库libSomething.so
和头文件something.h
。
该库是交叉编译和测试的(或者更好的是,可以在目标平台上直接编译,与示例应用程序链接和测试)。
现在,我想在另一个大型项目中使用此共享库,在该项目中Eclipse交叉编译所有文件,然后将可执行文件发送到目标。 (不幸的是,不可能直接在目标上编译该项目)。
目的是在SDSoC *(基于Eclipse的Vivado程序)上使用相同的共享库。去做这个:
右键单击应用程序->属性-> C/C++构建->设置->工具设置-> SDS++链接器->库
控制台显示
cannot find -llibSomething
。完整的行是:/opt/Xilinx/SDK/2017.4/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/6.2.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find -llibSomething
另外,我尝试在C/C++常规->代码分析->路径和符号->库和库路径中添加文件夹和库。结果是一样的。
另外,我已经遍历了控制台消息,并且验证了sds++编译器调用是正确的:
sds++ -L/path/to/library --remote_ip_cache ......
即使在Makefile中,该指令也是正确的。我不能面对这个问题。我究竟做错了什么?
在帖子末尾,问题是:
如何在SDSoC中使用(链接)共享库?
最佳答案
链接器添加了lib
前缀和文件扩展名,因此请不要在库列表中包括它们。使用Something
而不是libSomething
。