假设我有一个共享库 libSomething.so
和头文件 something.h
。
该库经过交叉编译和测试(或者,更好的是,直接在目标平台上编译,与示例应用程序链接和测试)。 现在我想在另一个大项目中使用这个共享库,在这个项目中 Eclipse 交叉编译所有文件,然后我将把可执行文件发送到目标。 (不幸的是,无法直接在目标上编译此项目)。
目的是为了在SDSoC*(基于eclipse的Vivado程序)上使用同一个共享库。为此:
-右键单击应用程序 -> 属性 -> C/C++ 构建 -> 设置 -> 工具设置 -> SDS++ 链接器 -> 库
库搜索路径(-L) -> 添加 -> "path/to/library"
库 (-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: 找不到 -llibSomething
此外,我尝试在 C/C++ General -> Code Analysis -> Paths and Symbols -> Libraries and Library Paths 中添加文件夹和库。结果是一样的。
此外,我已经通过控制台消息验证了 sds++ 编译器调用是正确的:
sds++ -L/path/to/library --remote_ip_cache ......
即使在 Makefile 中,指令也是正确的。我无法面对这个问题。我做错了什么?
文章最后的问题是:
如何在 SDSoC 中使用(和链接)共享库?
the SDSoC is a program develop by xilinx. More informations here. Also I posted a similar question on the xilinx forum with no answer so far.
最佳答案
链接器添加了 lib
前缀和文件扩展名,因此不要将它们包含在库列表中。使用 Something
而不是 libSomething
。
关于c++ - 在 Eclipse 环境中使用共享库 (SDSoC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241765/