简体   繁体   English

STM32CubeIDE中链接static库的问题

[英]Problem with linking static library in STM32CubeIDE

I'm having problems with including the MicroPython as a static library into an STM32CubeIDE project.我在将 MicroPython 作为 static 库包含到 STM32CubeIDE 项目中时遇到问题。

My ultimate goal is to run the MicroPython as a FreeRTOS task.我的最终目标是将 MicroPython 作为 FreeRTOS 任务运行。 At this point I don't have the FreeRTOS in the mix yet, I'm just trying to use the MicroPython library from my own app.此时我还没有混合使用 FreeRTOS,我只是想从我自己的应用程序中使用 MicroPython 库。

I have successfully compiled (with the provided make files) and ran the MicroPython minimal port (for STM32, https://github.com/micropython/micropython/tree/master/ports/minimal ) and independently a little FreeRTOS test app with CubeIDE on my F407-DISCO board.我已经成功编译(使用提供的 make 文件)并运行了 MicroPython 最小端口(用于STM32,https://github.com/micropython/micropython/tree/master/ports/minimal )并独立运行了一个带有 CubeIDE 的小 FreeRTOS 测试应用程序在我的 F407-DISCO 板上。

I then compiled the minimal port into aa library file.然后我将最小端口编译成一个库文件。 I'm not 100% sure that the compilation worked perfectly, but at least I got no errors and aa file that contains objects that seem to be the correct ones: Some of the objects我不能 100% 确定编译工作是否完美,但至少我没有遇到任何错误,并且有一个文件包含似乎正确的对象:一些对象

I have included the headers and the compilation succeeds, but the linking fails.我已经包含了标题并且编译成功,但链接失败。

First I tried to include the.a file into the libraries like this: CubeIDE settings 1首先,我尝试将 .a 文件包含到这样的库中: CubeIDE settings 1

But the build failed with error:但是构建失败并出现错误:

attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: cannot find -lC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a.a failed
attempt to open 
c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:68: FreeRTOS-test-2.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

09:12:18 Build Failed. 2 errors, 0 warnings. (took 4s.417ms)

I was told that the filename used in the -l option has to be without the lib prefix and the.a extension.有人告诉我,-l 选项中使用的文件名必须没有 lib 前缀和 .a 扩展名。 So I changed the path like this:所以我改变了这样的路径:

CubeIDE settings 2 CubeIDE 设置 2

Then the CubeIDE did not find the file at all and the linking failed because of empty value is provided for the -l option:然后 CubeIDE 根本没有找到该文件并且链接失败,因为为 -l 选项提供了空值:

attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\lib-mcpu=cortex-m4.a failed
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: cannot find -l-mcpu=cortex-m4
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\lib-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\lib-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\lib-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\-mcpu=cortex-m4.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\-mcpu=cortex-m4.a failed

....

attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\libm.a succeeded
c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\libm.a
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:68: FreeRTOS-test-2.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

09:14:24 Build Failed. 2 errors, 0 warnings. (took 4s.433ms)

Then I tried multiple different names for the library file and even placed two files in the folder, one with the name "libmicropython.a" or "libmicropython" and another with "micropython" so that the CubeIDE finds a file it is looking for and also the linker can find a correctly named file.然后我为库文件尝试了多个不同的名称,甚至在文件夹中放置了两个文件,一个名为“libmicropython.a”或“libmicropython”,另一个名为“micropython”,以便 CubeIDE 找到它正在寻找的文件和linker 也可以找到一个正确命名的文件。

To me this looks like the best attempt yet, but still it fails:对我来说,这看起来是最好的尝试,但仍然失败了:

CubeIDE settings 3 CubeIDE 设置 3

attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\libC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: cannot find -lC:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib/thumb/v7e-m+fp/hard\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../arm-none-eabi/lib\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\libc_nano.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a succeeded
c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-errno.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-exit.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-impure.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-init.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-malloc.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-memset.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-freer.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-mallocr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-printf.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-sbrkr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-strlen.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-findfp.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-fwalk.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-lock.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-mlock.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-vfprintf.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-vfprintf_i.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-reent.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-stdio.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-wbuf.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-writer.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-wsetup.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-closer.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-fflush.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-fvwrite.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-lseekr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-makebuf.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-memchr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-memcpy-stub.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-memmove.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-reallocr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-readr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-fstatr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-isattyr.o
(c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a)lib_a-nano-msizer.o
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard\libm.a failed
attempt to open c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a succeeded
c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:68: FreeRTOS-test-2.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

09:16:32 Build Failed. 2 errors, 0 warnings. (took 4s.452ms)

I have also tried to set only the library search path (-L option) pointing to my lib folder, but then the build fails:我还尝试仅设置指向我的 lib 文件夹的库搜索路径(-L 选项),但随后构建失败:

CubeIDE settings 4 CubeIDE 设置 4

c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./Core/Src/main.o: in function `main':
C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/Debug/../Core/Src/main.c:40: undefined reference to `gc_init'
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/Debug/../Core/Src/main.c:42: undefined reference to `mp_init'
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/Debug/../Core/Src/main.c:53: undefined reference to `pyexec_friendly_repl'
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/Debug/../Core/Src/main.c:60: undefined reference to `mp_deinit'
c:\st\stm32cubeide_1.8.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: link errors found, deleting executable `FreeRTOS-test-2.elf'
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:68: FreeRTOS-test-2.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

09:19:14 Build Failed. 7 errors, 0 warnings. (took 4s.582ms)

which to me looks like the linker did not find the library from the folder and therefore the references are still undefined.在我看来,linker 没有从文件夹中找到库,因此引用仍未定义。 I don't see the -L option at all in the log though...我在日志中根本没有看到 -L 选项......

What am I doing wrong here?我在这里做错了什么? I'm not an expert of these things, so it might be something very simple.我不是这些事情的专家,所以它可能非常简单。 Perhaps with the compilation of the library file itself.也许与库文件本身的编译。

Any help is appreciated!任何帮助表示赞赏!

PS I had to cut down the logs so that they fitted into the post.附言:我不得不砍掉原木,以便它们适合柱子。 If there's something critical info missing, I will add it.如果缺少某些重要信息,我会添加它。

Answering my own question.回答我自己的问题。

With the help of my colleague, I got it working.在同事的帮助下,我成功了。 The -l option has only "micropython", not the absolute path, and the library search path points to "..", which is the root of the project. -l选项只有“micropython”,没有绝对路径,库搜索路径指向“..”,也就是项目的根目录。

The image below shows the working linker settings and.a file location.下图显示了工作 linker 设置和.a 文件位置。

工作链接器设置

c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib\C:/Users/mhe/STM32CubeIDE/workspace_1.8.0/FreeRTOS-test-2/lib/libmicropython.a

If you look at this path you will see that is invalid.如果您查看此路径,您会发现这是无效的。 It shoud be relative to your project location, not toolchain location.它应该与您的项目位置相关,而不是工具链位置。

Simply use button add and do not try to type it.只需使用按钮添加,不要尝试键入它。

Have you tried to add the library to the linker call instead of the general settings:您是否尝试将库添加到链接器调用而不是常规设置:

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM