本帖最后由 古来夏 于 2024-11-20 12:12 编辑

【联盛德 W800 Arduino开发板】+Arduino IDE无法通过编译问题详解

我在【联盛德 W800 Arduino开发板】+ADC采集flex弯曲传感数据传输,链接[https://mbb.eet-china.com/forum/topic/147145_1_1.html]中遇到了无法完成编译的问题:

121139gkqq5fk90z5kk55g

正常编译应该如下图提示信息:

121139zdma1d1v49zm1rg9

上个帖子中,没有进行非常详细的讲解,如何解决该问题,将在该帖子中详尽说明。

我们来看一下错误代码,查看错误代码的方法,选择文件-首选项,勾选显示详细输出“编译”:

121139dkz7sddlsy87gm89

之后,先看一下错误代码:

正在编译项目...

"C:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\tools\\csky\\2021.04.23/bin/csky-elfabiv2-g++" -c "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294\\sketch\\sketch_nov19a.ino.cpp" -mcpu=ck804ef -mhard-float -DGCC_COMPILE=1 -O2 -g3 -Wall -ffunction-sections -fdata-sections -c -DF_CPU=240000000 -DARDUINO_CORE_w806 -DARDUINO=10819 -D__XT804_W800__ -DARDUINO_HLK_w80x -DTLS_CONFIG_CPU_XT804=1 -fno-rtti "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\tools\\csky\\2021.04.23/csky-elfabiv2/include" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/include" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/include/arch/XT804" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/include/arch/XT804/csi_dsp" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/include/arch/XT804/csi_core" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/include/driver" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806" "-IC:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\variants\\w800" -MMD -MP -MF "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294\\sketch\\sketch_nov19a.ino.cpp.o.d" -MT "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294\\sketch\\sketch_nov19a.ino.cpp.o" -o "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294\\sketch\\sketch_nov19a.ino.cpp.o"

Compiling libraries...

Compiling core...

Using precompiled core: C:\Users\CARBON~1\AppData\Local\Temp\arduino_cache_602742\core\core_9804e0c35c23f41c242fd1db8da65163.a

Linking everything together...

"C:\\Users\\CarbonSens Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\tools\\csky\\2021.04.23/bin/csky-elfabiv2-gcc" -Wl,--gc-sections -Wl,-zmax-page-size=1024 -Wl,--whole-archive "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294\\sketch\\sketch_nov19a.ino.cpp.o" "C:\\Users\\CarbonSens" "Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/lib/libdsp.a" "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_cache_602742\\core\\core_9804e0c35c23f41c242fd1db8da65163.a" -Wl,--no-whole-archive -nostartfiles -mhard-float -lsupc++ -mcpu=ck804ef -lm "-Wl,-TC:\\Users\\CarbonSens" "Tech\\Documents\\ArduinoData\\packages\\w80x_duino\\hardware\\XT804\\0.0.6\\cores\\w806/ld/gcc_csky.ld" "-Wl,--ckmap=C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294/sketch_nov19a.ino.map" -o "C:\\Users\\CARBON~1\\AppData\\Local\\Temp\\arduino_build_83294/sketch_nov19a.ino.elf"

csky-elfabiv2-gcc: error: C:\Users\CarbonSens: No such file or directory

csky-elfabiv2-gcc: error: Tech\Documents\ArduinoData\packages\w80x_duino\hardware\XT804\0.0.6\cores\w806/lib/libdsp.a: No such file or directory

csky-elfabiv2-gcc: error: Tech\Documents\ArduinoData\packages\w80x_duino\hardware\XT804\0.0.6\cores\w806/ld/gcc_csky.ld: No such file or directory

exit status 1

为开发板 W800 编译时出错。

从这个代码中,可以看到,是因为编译过程中,软件无法索引到csky-elfabiv2-gcc编译工具,但是从对应的文件夹中,确实是可以找到该文件夹与编译工具的。

问题是“我的本地路径中存在空格”

121204hgfngpotp815z1ot

可以注意到,我的用户名中间出现了空格,而w800 arduino开源项目中使用到的csky-elfabiv2-gcc编译工具,又恰好安装在了

121204xguc2kzkk4cz2k7j

这将会导致,编译链工具索引到“C:\Users\CarbonSens”时便终止了,而错误信息中的提示也是如此:

csky-elfabiv2-gcc: error: C:\Users\CarbonSens: No such file or directory

csky-elfabiv2-gcc: error: Tech\Documents\ArduinoData\packages\w80x_duino\hardware\XT804\0.0.6\cores\w806/lib/libdsp.a: No such file or directory

因此,解决该编译失败问题的方法有两个:

(1)重装Arduino IDE,并将其安装在其他路径中,其他不存在空格或者中文名的路径下;

(2)更改用户文件夹名,去除空格。

这里我介绍方法(2)是如何操作的。

Step1:我的系统是WIN11,在这个家庭版操作系统中,没有策略组,因此需要在控制面板中,新建一个账户名,并将其设置为管理员模式,然后将带有空格的账户,设置为标准模式。

在这一步中,可以创建一个没有邮箱的账户

121204q5t8s8b58btfpebu

Step2:需要给新建的用户管理员模式,否则不能操作其他用户文件夹

121207y7mpth2ivmmaokp9

Step3:登录新建用户,直接对有空格的文件夹进行更改,删掉空格

121207h88r44bel4kbcnmm

Step4:删除空格之后,还需要对注册表内的索引进行更正:

Win+R,输入regedit打开注册表编辑器,进入HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList

将其子文件夹中,找到带有旧的含有空格的用户文件夹名进行修改,改为新的用户名

Step5:还需要对环境变量做简单修改(部分软件需要索引绝对地址的那些)

121207xyyxceiaawwerawh

Step6:最后将改好名的用户权限设置回管理员模式,并将新建的用户重新降级为标准模式

Step7:最后一步,只需要登录改好名的用户,然后删除新建的用户,ok了,无损删除用户名空格,也就可以进行对应的编译和修改,这个比较重要,很多IDE环境都对空格和中文有限制,特别是路径中,这个用户名还关系到桌面,因此早改早享受!!

本次分享就到这里,感谢各位读者阅读,路过给个小赞吧~~祝大家生活愉快,凡遇问题都不是问题!!