我们说我有一个共享库libSomething.so
和头文件something.h
。
对库进行了交叉编译和测试(或者更好,直接在目标平台上编译,使用示例应用程序进行链接和测试)。 现在我想在另一个大型项目中使用这个共享库,其中Eclipse交叉编译所有文件,然后,我将可执行文件发送到目标。 (不幸的是,不可能直接在目标上编译这个项目。)
目的是在SDSoC *上使用相同的共享库(基于eclipse的Vivado程序)。要做到这一点:
- 点击应用程序 - >属性 - > C / C ++ Build - >设置 - >工具设置 - > SDS ++ Linker - >库
图书馆搜索路径(-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 ++ General中添加文件夹和库 - >代码分析 - >路径和符号 - >图书馆和图书馆路径。结果是一样的。
另外,我已经通过控制台消息,并且我验证了sds ++编译器调用是正确的:
sds++ -L/path/to/library --remote_ip_cache ......
即使在Makefile中,指令也是正确的。我无法面对这个问题。我做错了什么?
在帖子的最后,问题是:
如何在SDSoC中使用(和链接)共享库?
SDS是由xilinx开发的一个程序。更多信息 here。 我还在xilinx forum上发布了类似的问题 到目前为止没有答案。
答案 0 :(得分:1)
链接器会添加lib
前缀和文件扩展名,因此不要在库列表中包含这些内容。使用Something
代替libSomething
。