假设我有一个共享库libSomething.so和头文件something.h

该库是交叉编译和测试的(或者更好的是,可以在目标平台上直接编译,与示例应用程序链接和测试)。
现在,我想在另一个大型项目中使用此共享库,在该项目中Eclipse交叉编译所有文件,然后将可执行文件发送到目标。 (不幸的是,不可能直接在目标上编译该项目)。

目的是在SDSoC *(基于Eclipse的Vivado程序)上使用相同的共享库。去做这个:

右键单击应用程序->属性-> C/C++构建->设置->工具设置-> SDS++链接器->库

  • 库搜索路径(-L)->添加->“path/to/library”
  • 库(-l)->添加->“libSomething”(我也尝试过“libSomething.so”,效果相同)。

  • c++ - 在Eclipse环境(SDSoC)中使用共享库-LMLPHP

    控制台显示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

    07-27 14:00