假设我有一个共享库libSomething.so
和头文件something.h
。
该库是交叉编译和测试的(或者更好的是,直接在目标平台上编译,与示例应用程序链接和测试)。现在,我想在另一个大型项目中使用此共享库,在该项目中Eclipse交叉编译所有文件,然后将可执行文件发送到目标。(不幸的是,不可能直接在目标上编译该项目)。
目的是在SDSoC *(基于Eclipse的Vivado程序)上使用相同的共享库。去做这个:
右键单击应用程序->属性-> C / C ++构建->设置->工具设置-> SDS ++链接器->库
库搜索路径(-L)->添加->“路径/到/库”
库(-l)->添加->“ libSomething”(我也尝试过“ libSomething.so”,但效果相同)。
控制台显示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中使用(链接)共享库?
SDSoC是xilinx开发的程序。更多信息 在这里。我也曾在xilinx论坛上发布了类似的问题, 到目前为止还没有答案。