先楫半导体HPMicro
直播中

jf_76924617

1年用户 14经验值
擅长:嵌入式技术
私信 关注
[问答]

Linux 下编译HPM_Math 工程报错

Ubuntu20.04,已经配置好环境,能编译helloworld 工程并下载运行。
尝试编译运行hpm_math/rfft的工程,报错无法编译cannot find -ldsp。 生成的ses工程可以编译运行。
请问是哪里设置不对吗?

roma@roma-PICO-TGU4 ~/t/c/h/h/s/h/r/build> pwd
/home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build

roma@roma-PICO-TGU4 ~/t/c/h/h/s/h/r/build> cmake -GNinja -DBOARD=hpm6750evk2 -DCMAKE_BUILD_TYPE=flash_xip_release ..
-- Application: /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft
-- Board: hpm6750evk2 from /home/roma/test/code/hpm/hpm_sdk/boards
-- Found toolchain: gnu (/home/roma/test/code/hpm/riscv-gnu-toolchain)
-- hpm_sdk: 1.3.0 (/home/roma/test/code/hpm/hpm_sdk)
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/roma/test/code/hpm/riscv-gnu-toolchain/bin/riscv32-unknown-elf-gcc
-- Segger linker script: /home/roma/test/code/hpm/hpm_sdk/soc/HPM6750/toolchains/gcc/flash_xip.ld
-- Segger device name: HPM6750xVMx
-- Segger openocd board config: /home/roma/test/code/hpm/hpm_sdk/boards/openocd/boards/hpm6750evk2.cfg
-- Segger Embedded Studio Project: /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/segger_embedded_studio/rfft.emProject
-- Configuring done
-- Generating done
-- Build files have been written to: /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build

roma@roma-PICO-TGU4 ~/t/c/h/h/s/h/r/build> ninja
[8/54] Building C object CMakeFiles/app.dir/src/rfft.c.obj
In file included from /home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/./hpm_math.h:2238,
                 from ../src/rfft.c:13:
/home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/nds_dsp/riscv_dsp_controller_math.h:495:36: warning: "__NDS32_EXT_PERF__" is not defined, evaluates to 0 [-Wundef]
  495 | #if defined(__NDS32_EXT_DSP__) || (__NDS32_EXT_PERF__ == 1)
      |                                    ^~~~~~~~~~~~~~~~~~
[50/54] Building C object CMakeFiles/hpm_sdk_lib.dir/home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/sw_dsp/hpm_math_sw.c.obj
In file included from /home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/./hpm_math.h:2238,
                 from /home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/sw_dsp/hpm_math_sw.c:8:
/home/roma/test/code/hpm/hpm_sdk/middleware/hpm_math/nds_dsp/riscv_dsp_controller_math.h:495:36: warning: "__NDS32_EXT_PERF__" is not defined, evaluates to 0 [-Wundef]
  495 | #if defined(__NDS32_EXT_DSP__) || (__NDS32_EXT_PERF__ == 1)
      |                                    ^~~~~~~~~~~~~~~~~~
[54/54] Linking C executable output/demo.elf
FAILED: output/demo.elf 
: && /home/roma/test/code/hpm/riscv-gnu-toolchain/bin/riscv32-unknown-elf-gcc    CMakeFiles/app.dir/src/rfft.c.obj  -o output/demo.elf  -Wl,-Map=/home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/output/demo.map  -Wl,--whole-archive  lib/libhpm_sdk_gcc_lib.a  lib/libhpm_sdk_lib.a  -Wl,--no-whole-archive  -static  -nostartfiles  -Wl,--gc-sections  -Wl,--print-memory-usage  -mabi=ilp32  -march=rv32imac  --specs=nano.specs  -u _printf_float  -u _scanf_float  -Xlinker --defsym=_flash_size=16M  -Xlinker --defsym=_extram_size=32M  -ldsp  -lm  -T /home/roma/test/code/hpm/hpm_sdk/soc/HPM6750/toolchains/gcc/flash_xip.ld && cd /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build && /home/roma/test/code/hpm/riscv-gnu-toolchain/bin/riscv32-unknown-elf-objcopy -O binary -S /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/output/demo.elf /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/output/demo.bin && cd /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build && /home/roma/test/code/hpm/riscv-gnu-toolchain/bin/riscv32-unknown-elf-objdump -S -d /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/output/demo.elf > /home/roma/test/code/hpm/hpm_sdk/samples/hpm_math/rfft/build/output/demo.asm
/home/roma/test/code/hpm/riscv-gnu-toolchain/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: cannot find -ldsp
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

回帖(2)

京五环以外

2023-12-26 18:27:58
根据您提供的信息,无法确定确切的问题。但是,根据报错信息 "cannot find -ldsp",可以推断出可能缺少名为 "libdsp" 的库文件。

要解决这个问题,您可以尝试以下方法:

1. 检查是否正确安装了名为 "libdsp" 的库。您可以使用以下命令来查找并安装该库:
   ```
   sudo apt search libdsp
   sudo apt install libdsp-dev
   ```

2. 如果上述命令无法找到 "libdsp",您可以尝试在互联网上搜索该库的安装方法,并按照指示进行安装。

3. 如果您已经安装了 "libdsp",但找不到库文件,您可以检查库文件的位置,并在 CMakeLists.txt 文件中添加正确的库路径。在 CMakeLists.txt 文件中,可以通过以下方式添加库路径:
   ```
   link_directories(/path/to/lib)
   ```

4. 确保您正在使用正确的编译器和链接器标志,在 CMakeLists.txt 文件中可以通过以下方式添加:
   ```
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ldsp")
   ```

请注意,以上解决方法是基于您提供的信息进行的推测。如果问题仍然存在,请提供更多详细的报错信息,以便我们能够更好地帮助您。
举报

jf_86523069

2024-2-16 17:53:37
“dsp”的库
如果在Linux下编译HPM_Math工程时遇到“查找ldsp命令”这样的错误,这通常意味着编译器在尝试链接一个名为ldsp的库时失败了,因为它找不到这个库。在大多数情况下,链接库时应该使用-l选项 followed by the library name without the prefix lib and suffix .so or .a (depending on whether it's a shared or static library).

例如,如果有一个库叫做libdsp.so或libdsp.a,你应该在编译命令中使用-ldsp来链接它。

为了解决这个问题,你可以按照以下步骤操作:

确认库的存在:
使用find / -name libdsp.so或find / -name libdsp.a来搜索整个系统,看是否存在这个库文件。
如果库文件存在,确保它的路径被包含在链接器的搜索路径中。你可以使用-L选项来指定库文件的路径,例如-L/path/to/library。
安装缺失的库:
如果ldsp是一个标准的库或属于某个软件包,尝试使用包管理器来安装它。对于基于Debian的系统(如Ubuntu),可以使用apt或apt-get。
运行sudo apt-get update和sudo apt-get install libdsp-dev(假设libdsp-dev是包含ldsp的开发包)。
检查Makefile:
打开HPM_Math工程的Makefile,查看链接阶段是否有误。确认链接选项是否正确,特别是与-ldsp相关的部分。
环境变量:
确保LD_LIBRARY_PATH环境变量包含库文件所在的目录。这可以通过在shell中运行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library来实现。
库的命名和版本:
有时,库可能有不同的版本或命名约定。确保你链接的是正确的库版本,并且库名称没有拼写错误。
查阅文档或支持:
查阅HPM_Math的文档或在线支持,看看是否有关于库依赖或编译说明的信息。
尝试编译其他示例或项目:
如果可能,尝试编译HPM_Math提供的其他示例或项目,看看是否也会出现同样的错误。这可以帮助你确定问题是特定于你的环境还是更广泛的问题。
如果上述步骤都不能解决问题,你可能需要联系HPM_Math的开发者或查看相关的社区william hill官网 和支持,以获取更具体的帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分