乐鑫技术交流
直播中

Arvinhw

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

如何为xtensa编译C++?

我想为 xtensa 编译简单的 C++ 代码,但我不能。
代码:全选#include "ets_sys.h"
#include "osapi.h"
#include "gpio.h"
#include "os_type.h"
#include "user_config.h"
#include "user_interface.h"
#include "espconn.h"

extern "C" void ICACHE_FLASH_ATTR
user_init()
{
    //wifi_set_opmode(i);
}


我用这个命令编译了文件。
(这部作品)
代码:全选xtensa-lx106-elf-g++ -I. -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -fno-rtti -fno-exceptions -c -o bin/user_main.o user_main.cpp


并与此相关联。
代码:全选
xtensa-lx106-elf-gcc -L /home/esp-open-sdk/sdk/lib -T /home/esp-open-sdk/sdk/ld/eagle.app.v6.ld -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lgcc -lmain -lnet80211 -lwpa -llwip -lpp -lphy -lc -lupgrade -Wl,--end-group  bin/user_main.o -o bin/user_main


如果文件中使用了 SDK 中的任何函数,则链接结束时出现未定义的引用错误
代码:全选bin/user_main.o:(.irom0.text+0x0): undefined reference to `wifi_set_opmode(unsigned char)'
bin/user_main.o: In function `user_init':
/home/esp/user_main.cpp:12: undefined reference to `wifi_set_opmode(unsigned char)'
collect2: error: ld returned 1 exit status


任何人都可以显示为 Xtensa 编译和链接 c++ 的最少命令吗?

回帖(1)

笔画张

2024-6-5 17:54:27
-none-branch -fno-exceptions -fno-rtti -c -DF_CPU=80000000L -DLWIP_OPEN_SRC  -DDEBUG_ESP -DDEBUG -DLWIP_DEBUG -I . -I /path/to/xtensa/include -o main.o main.cpp这个命令将C++代码编译为目标代码并生成一个名为“main.o”的目标文件。如果您需要将代码链接到其他目标文件中,请使用以下命令:全选xtensa-lx106-elf-g++ -Os -g -O2 -Wpo-none-branch -fno-exceptions -fno-rtti -c -DF_CPU=80000000L -DLWIP_OPEN_SRC -DDEBUG_ESP -DDEBUG -DLWIP_DEBUG -I . -I /path/to/xtensa/include -o main.o main.cppxtensa-lx106-elf-gcc -L /path/to/xtensa/lib -nostdlib -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lmain -Wl,--end-group -o firmware.elf main.o如果您需要生成HEX文件,则需使用以下命令:全选xtensa-lx106-elf-objcopy --only-section=.text -O binary firmware.elf firmware.binxtensa-lx106-elf-objcopy --only-section=.data -O binary firmware.elf firmware.dataxtensa-lx106-elf-objcopy --only-section=.rodata -O binary firmware.elf firmware.rodatacat firmware.bin firmware.data firmware.rodata > firmware.hex接下来,您可以将HEX文件烧录到您的xtensa设备上。
举报

更多回帖

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