undefined reference _sbrk C++

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

undefined reference _sbrk C++

Inlägg av dangraf »

Nu försöker jag få mitt första C++ projekt att kompilera men misslyckas.

felmeddelandet jag får är dels att den inte verkar hitta _sbrk och även att den inte hittar symbolen _start
Compiling:
arm-none-eabi-g++ ../../../source/GUI/drivers/glPoint.cpp -I../../../source/Projects/armGuiDebug -I../../../source/ -I../../../source/include -I../../../build/compiler/gcc/core -I../../../build/compiler/gcc/peripheral -I../../../build/compiler/gcc/cpp -O0 -Wall -Wa,-adhlns="../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.lst" -fno-exceptions -fno-rtti -fmessage-length=0 -MMD -MP -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -Wa,-adhlns=../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.lst -MF ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.d -MT ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.dt -o ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o
/home/danegraf/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000800c
/home/danegraf/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb2/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x12): undefined reference to `_sbrk'
collect2: ld returned 1 exit status

det jag tycker är skummt är att den gnäller på _sbrk innan kompilatorn ens kommit till "syscalls.c" där den är skriven som:

Kod: Markera allt

caddr_t _sbrk(int incr)
{
	char *prev_heap_end;
	if (heap_end == 0) {
		heap_end = &_end;
	}
	prev_heap_end = heap_end;
#if 1
	if (heap_end + incr > get_stack_top()) {
		xprintf("Heap and stack collision\n");
		abort();
	}
#endif
	heap_end += incr;
	return (caddr_t) prev_heap_end;
}
vad beror felmeddelanden om "_start" på?

Är det någon include-fil jag missat eller är det någon flagga vid kompileringen som spökar?
någon som vet?

Mvh/Daniel
Användarvisningsbild
AndLi
Inlägg: 18263
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: undefined reference _sbrk C++

Inlägg av AndLi »

Är koden du visar all kod i projektet?
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Re: undefined reference _sbrk C++

Inlägg av dangraf »

Nej
jag kan inte ge all kod för projektet eftersom det är för mycket. Men jag kan ge koden för filen som den försöker kompilera:

Kod: Markera allt

#ifndef GLPOINT_H_
#define GLPOINT_H_

#include <stdlib.h>

class glPoint
{
private:
    int16_t x;
    int16_t y;
public:
    glPoint();
    glPoint(int16_t x, int16_t y);
    virtual ~glPoint();
};

#endif /* GLPOINT_H_ */

Kod: Markera allt

glPoint::glPoint(): x(0),y(0)
{

}
glPoint::glPoint(int16_t newX, int16_t newY) :x(newX), y(newY)
{

}
glPoint::~glPoint() {
    // TODO Auto-generated destructor stub
}
var det någon speciell fil du tänkte på?
jbulow
Inlägg: 114
Blev medlem: 22 juni 2006, 21:35:26
Ort: Malmö

Re: undefined reference _sbrk C++

Inlägg av jbulow »

Din kommandorad här nedanför borde ha med en "-c"-flagga eftersom du har en objektfil som output. Utan "-c" kommer du ju även försöka länka ditt program till en executable och då måste _start vara definierat eftersom programmet ska starta där. _sbrk likaså eftersom den ser till att du får lite heap att leva i.

mvh J

dangraf skrev:Nu försöker jag få mitt första C++ projekt att kompilera men misslyckas.

felmeddelandet jag får är dels att den inte verkar hitta _sbrk och även att den inte hittar symbolen _start
Compiling:
arm-none-eabi-g++ ../../../source/GUI/drivers/glPoint.cpp -I../../../source/Projects/armGuiDebug -I../../../source/ -I../../../source/include -I../../../build/compiler/gcc/core -I../../../build/compiler/gcc/peripheral -I../../../build/compiler/gcc/cpp -O0 -Wall -Wa,-adhlns="../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.lst" -fno-exceptions -fno-rtti -fmessage-length=0 -MMD -MP -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -Wa,-adhlns=../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.lst -MF ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.d -MT ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o.dt -o ../../../out/armGuiDebug/obj/source/GUI/drivers/glPoint.o
/home/danegraf/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000800c
/home/danegraf/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb2/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x12): undefined reference to `_sbrk'
collect2: ld returned 1 exit status

det jag tycker är skummt är att den gnäller på _sbrk innan kompilatorn ens kommit till "syscalls.c" där den är skriven som:

Kod: Markera allt

caddr_t _sbrk(int incr)
{
	char *prev_heap_end;
	if (heap_end == 0) {
		heap_end = &_end;
	}
	prev_heap_end = heap_end;
#if 1
	if (heap_end + incr > get_stack_top()) {
		xprintf("Heap and stack collision\n");
		abort();
	}
#endif
	heap_end += incr;
	return (caddr_t) prev_heap_end;
}
vad beror felmeddelanden om "_start" på?

Är det någon include-fil jag missat eller är det någon flagga vid kompileringen som spökar?
någon som vet?

Mvh/Daniel
dangraf
Inlägg: 530
Blev medlem: 9 juni 2003, 15:30:56
Ort: göteborg

Re: undefined reference _sbrk C++

Inlägg av dangraf »

tack!
där ser man, helt blind för de enkla felen.. Nu kompilerar det och länkar som det ska.
Skriv svar