0

编译 C++ XSDK 项目时会导致以下链接器错误的原因是什么?

链接器错误消息:

./src/platform/platform_zynq.o: In function `timer_callback(XScuTimer*)':
platform_zynq.c:115:undefined reference to `dhcp_fine_tmr()'

platform_zynq.c:117:undefined reference to `dhcp_coarse_tmr()'

collect2.exe: error: ld returned 1 exit status
make: *** [uartcmd.elf] Error 1

链接器命令如下:

arm-none-eabi-g++ \
    -mcpu=cortex-a9 \
    -mfpu=vfpv3 \
    -mfloat-abi=hard \
    -Wl,-build-id=none \
    -specs=Xilinx.spec \
    -Wl,-T\
    -Wl,../src/lscript.ld \
    -L../../uartcmd_bsp/ps7_cortexa9_0/lib \
    -o "uartcmd.elf" \
    ./src/platform/platform.o \
    ./src/platform/platform_mb.o \
    ./src/platform/platform_ppc.o \
    ./src/platform/platform_zynq.o \
    ./src/platform/platform_zynqmp.o \
    ./src/fpga_registers2.clang.o \
    ./src/main.o \
    ./src/network.o \
    -Wl,\
    --start-group,-lxil,-lfreertos,-lgcc,-lc,-lstdc++,--end-group\
    -Wl,--start-group,-lxil,-llwip4,-lgcc,-lc,--end-group

配置 Xilinx SDK 项目如下:

// Step 0: Create Application Project with FreeRTOS Selected
//
// Step 1: Adding lwIP library to XSDK project.
//
// (2) Right click <app>_bsp and select
// "Board Support Package Settings"
// (3) Click Check box "lwip"
//
// Step 2: Add DHCP Support
// (1) Right click <app>_bsp and select
// "Board Support Package Settings"
// (2) Click Overview:freertos901_xilinx.lwip141
// (3) Check dhcp_options.dhcp_does_arp_check true
// (4) Check dhcp_options.lwip_dhcp true

符号表如下:

$ nm ./zynq_rtl.sdk/uartcmd_bsp/ps7_cortexa9_0/lib/liblwip4.a | grep -i dhcp_fine

00001c7c T dhcp_fine_tmr

$ nm ./zynq_rtl.sdk/uartcmd_bsp/ps7_cortexa9_0/lib/liblwip4.a | grep -i dhcp_coarse

00001a54 T dhcp_coarse_tmr

$ nm -C ./uartcmd/Debug/src/platform/platform_zynq.o | grep dhcp_fine

         U dhcp_fine_tmr()

$ nm -C ./uartcmd/Debug/src/platform/platform_zynq.o | grep dhcp_coarse

         U dhcp_coarse_tmr()

对我来说,这看起来不像名称混乱问题......我添加了“-C”选项以防止符号名称的去混乱......

4

0 回答 0