raspberry pi pico建立C++环境报错解决

raspberry pi pico建立C++环境报错解决,第1张

raspberry pi pico建立C++环境报错解决
  • 环境
    • 报错情况
    • solution
    • 运行
    • 成功构建

环境

系统:windows8.1
ARM-GCC-compile
cmake
pico-sdk:https://github.com/raspberrypi/pico-sdk
pico-project-generator:https://github.com/raspberrypi/pico-project-generator
make工具:官网给的是visual studio 2019的nmake,但是报错了,我改成了MinGW32-make

报错情况

前期按照mobyw的库https://github.com/mobyw/pico-getting-started进行安装即可,步骤是:

  • 1、ARM-GCC compile
  • 2、pico-sdk
  • 2、cmake
  • 3、minGW
  • 4、pico-project-generator

使用pi_project.py建立新的project,使用“NMake Makefilfs”时,nmake命令报错如下:

(general) λ cmake ..
PICO_SDK_PATH is E:/pico/sdk/pico-sdk
PICO platform is rp2040.
Using regular optimized debug build (set PICO_DEOPTIMIZED_DEBUG=1 to de-optimize)
PICO target board is pico.
Using board configuration from E:/pico/sdk/pico-sdk/src/boards/include/boards/pico.h
TinyUSB available at E:/pico/sdk/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
Compiling TinyUSB with CFG_TUSB_DEBUG=1
-- Configuring done
-- Generating done
-- Build files have been written to: E:/pico/sdk/pico-project-generator/ProjectwithNmake/build

E:\pico\sdk\pico-project-generator\ProjectwithNmake\build (master -> origin)
(general) λ nmake

Microsoft (R) 程序维护实用工具 14.29.30141.0 版
版权所有 (C) Microsoft Corporation。


保留所有权利。


[ 1%] Creating directories for 'ELF2UF2Build' [ 3%] No download step for 'ELF2UF2Build' [ 5%] No update step for 'ELF2UF2Build' [ 6%] No patch step for 'ELF2UF2Build' [ 8%] Performing configure step for 'ELF2UF2Build' -- The C compiler identification is MSVC 19.29.30141.0 -- The CXX compiler identification is MSVC 19.29.30141.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - failed -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx86/x86/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx86/x86/cl.exe - broken CMake Error at E:/Cmake/share/cmake-3.23/Modules/CMakeTestCCompiler.cmake:69 (message): The C compiler "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx86/x86/cl.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: E:/pico/sdk/pico-project-generator/ProjectwithNmake/build/elf2uf2/CMakeFiles/CMakeTmp Run Build Command(s):nmake -f Makefile /nologo cmTC_b3b91\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\nmake.exe" -f CMakeFiles\cmTC_b3b91.dir\build.make /nologo -L CMakeFiles\cmTC_b3b91.dir\build Building C object CMakeFiles/cmTC_b3b91.dir/testCCompiler.c.obj E:\Cmake\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\cmTC_b3b91.dir\testCCompiler.c.obj.d --working-dir=E:\pico\sdk\pico-project-generator\ProjectwithNmake\build\elf2uf2\CMakeFiles\CMakeTmp --filter-prefix="注意: 包含文件: " -- C:\PROGRA~2\MICROS~4\2019\BUILDT~1\VC\Tools\MSVC\1429~1.301\bin\Hostx86\x86\cl.exe @C:\Users\asus-pc\Ap pData\Local\Temp\nm5394.tmp testCCompiler.c Linking C executable cmTC_b3b91.exe E:\Cmake\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_b3b91.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MICROS~4\2019\BUILDT~1\VC\Tools\MSVC\1429~1.301\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\cmTC_b3b91.dir\objects1.rsp @C:\Users\asus-pc\AppData\Local\Temp\nm547F.tmp RC Pass 1: command "rc /fo CMakeFiles\cmTC_b3b91.dir/manifest.res CMakeFiles\cmTC_b3b91.dir/manifest.rc" failed (exit code 0) with the following output: 系统找不到指定的文件。


NMAKE : fatal error U1077: “E:\Cmake\bin\cmake.exe”: 返回代码“0xffffffff” Stop. NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\nmake.exe"”: 返回代码“0x2” Stop. CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:2 (project) -- Configuring incomplete, errors occurred! See also "E:/pico/sdk/pico-project-generator/ProjectwithNmake/build/elf2uf2/CMakeFiles/CMakeOutput.log". See also "E:/pico/sdk/pico-project-generator/ProjectwithNmake/build/elf2uf2/CMakeFiles/CMakeError.log". NMAKE : fatal error U1077: “E:\Cmake\bin\cmake.exe”: 返回代码“0x1” Stop. NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\nmake.exe"”: 返回代码“0x2” Stop. NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\nmake.exe"”: 返回代码“0x2” Stop.

stackoverflow上有人的解决方案是使用Ninja,但是我的环境中还是报错,改用MinGW32-make.

solution
  • 1、 首先mingw下载安装base set里的所有package,bin里面开始是没有MinGW32-make.exe文件的,需要使用

    mingw-get install gcc g++ mingw32-make
    

    参看https://blog.csdn.net/qq_35203425/article/details/102839390

  • 2、直接使用cmake -G "MinGW32 Makefiles"可能会报错与之前的cmake generator不符。


    (*)

    需要将build下的cmakecache文件删掉,再指定MinGW Makefiles.(也可以使用cmake-gui.exe直接手动切换)

运行
  • 1、指定generator(cmake --help可以看到很多指令,里面有各种generator的名称,注意大小写)
E:\pico\sdk\pico-project-generator\projectwhihMingw-make\build (master -> origin)
λ cmake .. -G "MinGW Makefiles"
PICO_SDK_PATH is E:/pico/sdk/pico-sdk
Defaulting PICO_PLATFORM to rp2040 since not specified.
Defaulting PICO platform compiler to pico_arm_gcc since not specified.
-- Defaulting build type to 'Release' since not specified.
PICO compiler is pico_arm_gcc
-- The C compiler identification is GNU 10.3.1
-- The CXX compiler identification is GNU 10.3.1
-- The ASM compiler identification is GNU
-- Found assembler: E:/GNU-GCC_pico/10 2021.10/bin/arm-none-eabi-gcc.exe
Defaulting PICO target board to pico since not specified.
Using board configuration from E:/pico/sdk/pico-sdk/src/boards/include/boards/pico.h
-- Found Python3: E:/anaconda_installed/python.exe (found version "3.8.8") found components: Interpreter
TinyUSB available at E:/pico/sdk/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
-- Configuring done
-- Generating done
-- Build files have been written to: E:/pico/sdk/pico-project-generator/projectwhihMingw-make/build
  • 2、开始使用MinGW
E:\pico\sdk\pico-project-generator\projectwhihMingw-make\build (master -> origin)                                       
λ mingw32-make                                                                                                          
Scanning dependencies of target bs2_default                                                                             
[  1%] Building ASM object pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.obj     
[  3%] Linking ASM executable bs2_default.elf                                                                           
[  3%] Built target bs2_default                                                                                         
[  5%] Generating bs2_default.bin                                                                                       
[  6%] Generating bs2_default_padded_checksummed.S                                                                      
[  6%] Built target bs2_default_padded_checksummed_asm                                                                  
[  8%] Creating directories for 'ELF2UF2Build'                                                                          
[ 10%] No download step for 'ELF2UF2Build'                                                                              
[ 11%] No update step for 'ELF2UF2Build'                                                                                
[ 13%] No patch step for 'ELF2UF2Build'                                                                                 
[ 15%] Performing configure step for 'ELF2UF2Build'                                                                     
-- The C compiler identification is GNU 9.2.0                                                                           
-- The CXX compiler identification is GNU 9.2.0                                                                         
-- Detecting C compiler ABI info                                                                                        
-- Detecting C compiler ABI info - done                                                                                 
-- Check for working C compiler: E:/minGW_2/bin/gcc.exe - skipped                                                       
-- Detecting C compile features                                                                                         
-- Detecting C compile features - done                                                                                  
-- Detecting CXX compiler ABI info                                                                                      
-- Detecting CXX compiler ABI info - done                                                                               
-- Check for working CXX compiler: E:/minGW_2/bin/g++.exe - skipped                                                     
-- Detecting CXX compile features                                                                                       
-- Detecting CXX compile features - done                                                                                
-- Configuring done                                                                                                     
-- Generating done                                                                                                      
-- Build files have been written to: E:/pico/sdk/pico-project-generator/projectwhihMingw-make/build/elf2uf2             
[ 16%] Performing build step for 'ELF2UF2Build'                                                                         
[ 50%] Building CXX object CMakeFiles/elf2uf2.dir/main.cpp.obj                                                          
[100%] Linking CXX executable elf2uf2.exe                                                                               
[100%] Built target elf2uf2                                                                                             
[ 18%] No install step for 'ELF2UF2Build'                                                                               
[ 20%] Completed 'ELF2UF2Build'                                                                                         
[ 20%] Built target ELF2UF2Build                                                                                        
Scanning dependencies of target projectwhihMingw-make                                                                   
[ 22%] Building C object CMakeFiles/projectwhihMingw-make.dir/projectwhihMingw-make.c.obj                               
[ 23%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.o
bj                                                                                                                      
[ 25%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.o
bj                                                                                                                      
[ 27%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_claim/claim.c
.obj                                                                                                                    
[ 28%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_platform/platform
.c.obj                                                                                                                  
[ 30%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_sync/sync.c.o
bj                                                                                                                      
[ 32%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_uart/uart.c.o
bj                                                                                                                      
[ 33%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_divider/div
ider.S.obj                                                                                                              
[ 35%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_time/time.c.obj      
[ 37%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_time/timeout_helper.c
.obj                                                                                                                    
[ 38%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_timer/timer.c
.obj                                                                                                                    
[ 40%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_sync/sem.c.obj       
[ 42%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_sync/lock_core.c.obj 
[ 44%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_sync/mutex.c.obj     
[ 45%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_sync/critical_section
.c.obj                                                                                                                  
[ 47%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_util/datetime.c.obj  
[ 49%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_util/pheap.c.obj     
[ 50%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/common/pico_util/queue.c.obj     
[ 52%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_runtime/runtime.c
.obj                                                                                                                    
[ 54%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_clocks/clocks
.c.obj                                                                                                                  
[ 55%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
                                                                                                                        
[ 57%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_irq/irq_han
dler_chain.S.obj                                                                                                        
[ 59%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
                                                                                                                        
[ 61%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.o
bj                                                                                                                      
[ 62%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_watchdog/watc
hdog.c.obj                                                                                                              
[ 64%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.o
bj                                                                                                                      
[ 66%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_printf/printf.c.o
bj                                                                                                                      
[ 67%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops
_aeabi.S.obj                                                                                                            
[ 69%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c
.obj                                                                                                                    
[ 71%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_divider/divider
.S.obj                                                                                                                  
[ 72%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_double/double_a
eabi.S.obj                                                                                                              
[ 74%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_double/double_ini
t_rom.c.obj                                                                                                             
[ 76%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_double/double_mat
h.c.obj                                                                                                                 
[ 77%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_double/double_v
1_rom_shim.S.obj                                                                                                        
[ 79%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_int64_ops/pico_
int64_ops_aeabi.S.obj                                                                                                   
[ 81%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_float/float_aea
bi.S.obj                                                                                                                
[ 83%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_float/float_init_
rom.c.obj                                                                                                               
[ 84%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_float/float_math.
c.obj                                                                                                                   
[ 86%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_float/float_v1_
rom_shim.S.obj                                                                                                          
[ 88%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_malloc/pico_mallo
c.c.obj                                                                                                                 
[ 89%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops
_aeabi.S.obj                                                                                                            
[ 91%] Building ASM object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_standard_link/c
rt0.S.obj                                                                                                               
[ 93%] Building CXX object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_standard_link/n
ew_delete.cpp.obj                                                                                                       
[ 94%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_standard_link/bin
ary_info.c.obj                                                                                                          
[ 96%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
                                                                                                                        
[ 98%] Building C object CMakeFiles/projectwhihMingw-make.dir/E_/pico/sdk/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_
uart.c.obj                                                                                                              
[100%] Linking CXX executable projectwhihMingw-make.elf                                                                 
[100%] Built target projectwhihMingw-make                                                                               
成功构建

可以看到builde文件夹中已经有了.uf2文件,可以直接拖入pico。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/562914.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-02
下一篇2022-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存