Rapid Prototyping for general microcontroller applications, Ethernet, USB and 32-bit ARM® Cortex™-M3 based designs

Undefined Reference to gpio_init_out although included

19 Aug 2016

Hello,

I just started programming on the LPC1768 and I am now facing some issues regarding the Linker/Compiler of the LPCXpresso IDE. Actually I am programming with Keil uVision since many years, unfortunately the code size limit here is not big enough. That's very unfortunately, because generating Binary-Files with uVision works perfectly.

I just wanted to compile and link the mbed blinky template for my LPC1768 on LPCXpresso.

1. I opened the mbed online compiler and added a new project. Platform LPC1768, Template: Blinky LED Hello World, and checked the point "Update this program and libraries to latest version" (Actual Revision is 123)

2. I exported the project for LPCXpresso

3. I opened LPCXpresso and imported the zip file.

4. My first "Build All" gave the following errors:

c:/nxp/lpcxpresso_8.2.0_647/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: unrecognized option '-T'
c:/nxp/lpcxpresso_8.2.0_647/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/bin/ld.exe: use the --help option for usage information
collect2.exe: error: ld returned 1 exit status
make: *** [mbed_blinky.axf] Error 1


14:11:16 Build Finished (took 539ms)

5. After googling I found out that is has something to do with the Linker Scripts, so I checked the following settings: -> Properties for mbed_blinky-project, C/C++ Build, Settings, Tools Settings, MCU c++ Linker, Managed Linker Script:

The checkmark for Manage Linker Script was not checked. The Linker script referenced to "${workspace_loc:/${ProjName}/None}"

6. Now I tried two ways. The first way was deleting the linker script reference. This led to the following error:

./main.o: In function `mbed::DigitalOut::DigitalOut(PinName)':
C:\Users\***\Documents\LPCXpresso_8.2.0_647\workspace\mbed_blinky\mbed/DigitalOut.h:51: undefined reference to `memset'
C:\Users\***\Documents\LPCXpresso_8.2.0_647\workspace\mbed_blinky\mbed/DigitalOut.h:53: undefined reference to `gpio_init_out'
collect2.exe: error: ld returned 1 exit status
make: *** [mbed_blinky.axf] Error 1

7. Second way was checking the checkmark for "Manage Linker Script", this was the output:

./main.o: In function `mbed::DigitalOut::DigitalOut(PinName)':
C:\Users\***\Documents\LPCXpresso_8.2.0_647\workspace\mbed_blinky\mbed/DigitalOut.h:53: undefined reference to `gpio_init_out'
collect2.exe: error: ld returned 1 exit status
make: *** [mbed_blinky.axf] Error 1

With the checked "Manage Linker Scripts" checkmark, it hat no influence which Library I chose (Newlib(semihost),newlib(None) etc) All ways led to the same result.

I just don't understand the error "undefined reference to `gpio_init_out'". The main.cpp includes the mbed.h. mbed.h includes DigitalOut.h, DigitalOut.h includes gpio_api.h, which contains the function header of gpio_init_out. Certainly gpio_init_out is just an example function. It throws the error because its the only function I am referring to.

You can find the project here: /media/uploads/fabian90/mbed_blinky.zip

I worked with mBed Library Revision 123 and LPCXpresso 8.2.0. [Build 657]

I hope someone can help me. I see a lot of people on google having similar problems, but none of the solutions are working for me.

Sincerely, Fabian

Please log in to post a reply.