
- 环境
- 报错情况
- 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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)