Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 9 months ago.
mbed-os working on mbed-CLI, but not mbed-classic
I've spent a while on this and read around without luck so hope someone can help.
I've downloaded and setup my mbed-cli as per: https://www.youtube.com/watch?v=cM0dFoTuU14 (minor deviation is I have installed 2016q3 first and 2016q2 second (2016q2 without 'Add path to environment variable' or 'Add registry information').
I've successfully imported and compiled mbed-os-example-blinky as per this great blog post: http://grbd.github.io/posts/2016/11/06/using-the-mbed-cli/
I'm trying to work with mbed classic projects and no success. I always get he same Linker issue. I have created my own projects using mbed-CLI (<<code>>new mbed-classic-program --mbedlib<</code>>
), exported code and tried mbed_blinky from:
https://developer.mbed.org/users/mbed_demo/code/mbed_blinky
as per:
https://www.youtube.com/watch?v=PI1Kq9RSN_Y
In all cases I get many issues around the Linker including <<code>>undefined reference to `__wrap_exit'<</code>>
I have tried this with 2016q3 and 2016q2 (by using: mbed config GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM Embedded\5.4 2016q2\bin"). Any ideas what is wrong? Below is a full cmd session showing the issue. The mbed build looks to be the same as in the youtube video (Unpacking library build "f9eeca106725" in "C:\SOURCE\retry\mbed_blinky\mbed").
Is anyone successfully working with mbed-classic under mbed-CLI?
Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved. C:\Users\Chris>cd .. C:\Users>cd .. C:\>cd SOURCE C:\SOURCE>mkdir retry C:\SOURCE>cd retry C:\SOURCE\retry>mbed import https://developer.mbed.org/users/mbed_demo/code/mbed_blinky/ [mbed] Importing program "mbed_blinky" from "https://developer.mbed.org/users/mbed_demo/code/mbed_blinky" at latest revision in the current branch [mbed] Adding library "mbed" from "http://mbed.org/users/mbed_official/code/mbed/builds" at rev #f9eeca106725 [mbed] Downloading library build "f9eeca106725" (might take a minute) [mbed] Unpacking library build "f9eeca106725" in "C:\SOURCE\retry\mbed_blinky\mbed" [mbed] Couldn't find build tools in your program. Downloading the mbed 2.0 SDK tools... C:\SOURCE\retry>cd mbed_blinky C:\SOURCE\retry\mbed_blinky>mbed toolchain GCC_ARM [mbed] GCC_ARM now set as default toolchain in program "mbed_blinky" C:\SOURCE\retry\mbed_blinky>mbed target K64F [mbed] K64F now set as default target in program "mbed_blinky" C:\SOURCE\retry\mbed_blinky>mbed compile Building project mbed_blinky (K64F, GCC_ARM) Scan: . Scan: mbed Scan: env Compile [100.0%]: main.cpp Link: mbed_blinky c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp\libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [ERROR] c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp\libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [mbed] ERROR: "python" returned error code 1. [mbed] ERROR: Command "python -u C:\SOURCE\retry\mbed_blinky\.temp\tools\make.py -t GCC_ARM -m K64F --source . --build .\BUILD\K64F\GCC_ARM" in "C:\SOURCE\retry\mbed_blinky" --- C:\SOURCE\retry\mbed_blinky>mbed config --list [mbed] Global config: No global configuration is set [mbed] Local config (C:\SOURCE\retry\mbed_blinky): TOOLCHAIN=GCC_ARM TARGET=K64F C:\SOURCE\retry\mbed_blinky>mbed config GCC_ARM_PATH "C:\Program Files (x86)\GNU Tools ARM Embedded\5.4 2016q2\bin" [mbed] C:\Program Files (x86)\GNU Tools ARM Embedded\5.4 2016q2\bin now set as default GCC_ARM_PATH in program "mbed_blinky" C:\SOURCE\retry\mbed_blinky>mbed config --list [mbed] Global config: No global configuration is set [mbed] Local config (C:\SOURCE\retry\mbed_blinky): GCC_ARM_PATH=C:\Program Files (x86)\GNU Tools ARM Embedded\5.4 2016q2\bin TOOLCHAIN=GCC_ARM TARGET=K64F C:\SOURCE\retry\mbed_blinky>mbed compile Building project mbed_blinky (K64F, GCC_ARM) Scan: . Scan: mbed Scan: env Link: mbed_blinky c:/program files (x86)/gnu tools arm embedded/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp\libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [ERROR] c:/program files (x86)/gnu tools arm embedded/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp\libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [mbed] ERROR: "python" returned error code 1. [mbed] ERROR: Command "python -u C:\SOURCE\retry\mbed_blinky\.temp\tools\make.py -t GCC_ARM -m K64F --source . --build .\BUILD\K64F\GCC_ARM" in "C:\SOURCE\retry\mbed_blinky" --- C:\SOURCE\retry\mbed_blinky>
1 Answer
7 years, 9 months ago.
Hey Chris,
This was a bug in mbed-sdk-tools. The bug was that the tools would not recognize the mbed 2 revisions after a particular number, and treat them as mbed-os. I have updated these tools to include the most recent versions of mbed 2 libraries. You should be able to replace the tools with the new version and have no problems
TL;DR: delete the ".temp" directory and "mbed deploy" and try again. It should work this time
-Jimmy
The problem seems to be NOT solved. Compilation success with mbed-os-example-blinky, but fails with mbed_blinky! I tried with gcc-arm-none-eabi-5_4-2016q2 and gcc-arm-none-eabi-5_4-2016q3.
root@antoDeb8:/home/anto/Projects/mbed/mbed_blinky# mbed config list
[mbed] Global config:
GCC_ARM_PATH=/home/anto/Projects/mbed/gcc-arm-none-eabi-5_4-2016q2/bin
[mbed] Local config (/home/anto/Projects/mbed/mbed_blinky): TARGET=K64F root@antoDeb8:/home/anto/Projects/mbed# root@antoDeb8:/home/anto/Projects/mbed# mbed compile [mbed] Auto-installing missing Python modules... Building project mbed_blinky (K64F, GCC_ARM) Scan: . Scan: mbed Scan: env Compile [100.0%]: main.cpp Link: mbed_blinky /home/anto/Projects/mbed/gcc-arm-none-eabi-5_4-2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM/libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `wrap_exit' /home/anto/Projects/mbed/gcc-arm-none-eabi-5_4-2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `wrapcalloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `wrapcalloc_r' collect2: error: ld returned 1 exit status [ERROR] /home/anto/Projects/mbed/gcc-arm-none-eabi-5_4-2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/crt0.o: In function `_start': (.text+0x4e): undefined reference to `wrap_exit' ./mbed/f9eeca106725/TARGET_K64F/TOOLCHAIN_GCC_ARM/libmbed.a(error.o): In function `error': error.c:(.text.error+0x14): undefined reference to `wrap_exit' /home/anto/Projects/mbed/gcc-arm-none-eabi-5_4-2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/softfp/libc.a(lib_a-mprec.o): In function `_Balloc': mprec.c:(.text._Balloc+0x22): undefined reference to `wrapcalloc_r' mprec.c:(.text._Balloc+0x3e): undefined reference to `wrapcalloc_r' collect2: error: ld returned 1 exit status
[mbed] ERROR: "python" returned error code 1.
[mbed] ERROR: Command "python -u /home/anto/Projects/mbed/mbed_blinky/.temp/tools/make.py -t GCC_ARM -m K64F source . build ./BUILD/K64F/GCC_ARM" in "/home/anto/Projects/mbed/mbed_blinky"
-
First, we use gcc_arm_embedded 4.9.3, but that's not related to your problem. As I cannot reproduce this error on my machine, I would like to know a bit more information.
The procedure I followed is (Linux, GCC ARM Embedde v 4.9.3):
1. `$ mbed import http://mbed.org/teams/mbed/code/mbed_blinky/`
2. `$ cd mbed_blinky`
3.`$ mbed compile -t gcc_arm -m k64f`
```
Building project mbed_blinky (K64F, GCC_ARM)
Scan: .
Scan: mbed
Scan: env
Compile [100.0%]: main.cpp
Link: mbed_blinky
Elf2Bin: mbed_blinky
+---+-+-+--+
Module | .text | .data | .bss |
+---+-+-+--+
Fill | 73 | 4 | 2083 |
Misc | 37579 | 2492 | 749 |
Subtotals | 37652 | 2496 | 2832 |
+---+-+-+--+
Allocated Heap: 65536 bytes
Allocated Stack: unknown
Total Static RAM memory (data + bss): 5328 bytes
Total RAM memory (data + bss + heap + stack): 70864 bytes
Total Flash memory (text + data + misc): 41188 bytes
Image: ./BUILD/k64f/gcc_arm/mbed_blinky.bin ```
How does this compare to your process? Which OS are you running this on?
posted by 24 Feb 2017I run the whole procedure again, and the problem has apparently disappeared!
My OS is Debian Jessy.
1 - '$ mbed import http://mbed.org/teams/mbed/code/mbed_blinky/' 2 - '$ cd mbed_blinky/' 3 - '$ mbed config target EFM32GG_STK3700' 4 - '$ mbed toolchain GCC_ARM' 5 - '$ mbed config --list' 6 - '$ mbed compile' | Module | .text | .data | .bss | +-----------+-------+-------+------+ | Fill | 79 | 220 | 9 | | Misc | 31729 | 2500 | 627 | | Subtotals | 31808 | 2720 | 636 | +-----------+-------+-------+------+ Allocated Heap: 3072 bytes Allocated Stack: unknown Total Static RAM memory (data + bss): 3356 bytes Total RAM memory (data + bss + heap + stack): 6428 bytes Total Flash memory (text + data + misc): 34528 bytes Image: ./BUILD/EFM32GG_STK3700/GCC_ARM/mbed_blinky.bin
I noticed that the library build downloaded is the ad3be0349dc5, which it is different from the previous one that I used The problem is now import project to Simplicity Studio V3 (import->Simplicity Studio -> MCU Project) after the command
- 7 '$ mbed export -i simplicityv3' - 8 '$ ls'
Update!
I repeated all the steps necessary on OS Win7x64. I again the problem undefined reference to '_wrap_calloc_r' In this case the library build downloaded is the f9eeca106725
How can I force a different version from f9eeca106725?
C:\Users\Antonello\Documents\Projects\mbed-cli>mbed --version 1.0.0 C:\Users\Antonello\Documents\Projects\mbed-cli>mbed import https://developer.mbed.org/users/mbed_demo/code/mbed_blinky/ [mbed] Importing program "mbed_blinky" from "https://developer.mbed.org/users/mbed_demo/code/mbed_blinky" at latest revision in the current branch [mbed] Adding library "mbed" from "http://mbed.org/users/mbed_official/code/mbed/builds" at rev #f9eeca106725 [mbed] Downloading library build "f9eeca106725" (might take a minute) [mbed] Unpacking library build "f9eeca106725" in "C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky\mbed" [mbed] Couldn't find build tools in your program. Downloading the mbed 2.0 SDK tools... [mbed] Auto-installing missing Python modules... C:\Users\Antonello\Documents\Projects\mbed-cli>mbed detect [mbed] WARNING: The mbed tools were not found in "C:\Users\Antonello\Documents\Projects\mbed-cli". [mbed] WARNING: Limited information will be shown about connected mbed targets/boards --- [mbed] Detected "EFM32GG_STK3700" connected to "M:" and using com port "COM23" C:\Users\Antonello\Documents\Projects\mbed-cli>cd mbed_blinky C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>mbed detect [mbed] Detected EFM32GG_STK3700, port COM23, mounted M: [mbed] Supported toolchains for EFM32GG_STK3700 +-----------------+-----------+-----------+-----------+-----------+-----------+ | Target | mbed OS 2 | mbed OS 5 | ARM | GCC_ARM | IAR | +-----------------+-----------+-----------+-----------+-----------+-----------+ | EFM32GG_STK3700 | Supported | Supported | Supported | Supported | Supported | +-----------------+-----------+-----------+-----------+-----------+-----------+ Supported targets: 1 Supported toolchains: 3 C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>mbed toolchain GCC_ARM [mbed] GCC_ARM now set as default toolchain in program "mbed_blinky" C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>mbed target EFM32GG_STK3700 [mbed] EFM32GG_STK3700 now set as default target in program "mbed_blinky" C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>mbed compile Building project mbed_blinky (EFM32GG_STK3700, GCC_ARM) Scan: . Scan: mbed Scan: env Compile [100.0%]: main.cpp Link: mbed_blinky c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7-m/crt0.o: In function `_start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_EFM32GG_STK3700/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x16): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-mprec.o): In func tion `_Balloc': mprec.c:(.text._Balloc+0x24): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x40): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [ERROR] c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7-m/crt0.o: In function `_ start': (.text+0x4e): undefined reference to `__wrap_exit' ./mbed/f9eeca106725/TARGET_EFM32GG_STK3700/TOOLCHAIN_GCC_ARM\libmbed.a(error.o): In function `error': error.c:(.text.error+0x16): undefined reference to `__wrap_exit' c:/program files (x86)/gnu tools arm embedded/5.4 2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-mprec.o): In func tion `_Balloc': mprec.c:(.text._Balloc+0x24): undefined reference to `__wrap__calloc_r' mprec.c:(.text._Balloc+0x40): undefined reference to `__wrap__calloc_r' collect2.exe: error: ld returned 1 exit status [mbed] ERROR: "python" returned error code 1. [mbed] ERROR: Command "python -u C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky\.temp\tools\make.py -t GCC_ARM -m EFM32GG_STK3700 --source . --build .\BUILD\EFM32GG_STK3700\GCC_ARM" in "C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky"
With version ad3be0349dc5 the compilation is successful !!
C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>cd mbed C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky\mbed>mbed update ad3be0349dc5 [mbed] Updating library "mbed" to rev #ad3be0349dc5 [mbed] Downloading library build "ad3be0349dc5" (might take a minute) [mbed] Unpacking library build "ad3be0349dc5" in "C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky\mbed" [mbed] Updating reference "mbed" -> "https://mbed.org/users/mbed_official/code/mbed/builds/ad3be0349dc5" C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky\mbed>cd .. C:\Users\Antonello\Documents\Projects\mbed-cli\mbed_blinky>mbed compile --clean Building project mbed_blinky (EFM32GG_STK3700, GCC_ARM) Scan: . Scan: mbed Scan: env Compile [100.0%]: main.cpp Link: mbed_blinky Elf2Bin: mbed_blinky +-----------+-------+-------+------+ | Module | .text | .data | .bss | +-----------+-------+-------+------+ | Fill | 75 | 220 | 9 | | Misc | 31773 | 2500 | 627 | | Subtotals | 31848 | 2720 | 636 | +-----------+-------+-------+------+ Allocated Heap: 3072 bytes Allocated Stack: unknown Total Static RAM memory (data + bss): 3356 bytes Total RAM memory (data + bss + heap + stack): 6428 bytes Total Flash memory (text + data + misc): 34568 bytes Image: .\BUILD\EFM32GG_STK3700\GCC_ARM\mbed_blinky.bin