[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fwd: [avr-gcc-list] [Fwd: building gcc/g++]
From: |
Torsten Mohr |
Subject: |
Re: Fwd: [avr-gcc-list] [Fwd: building gcc/g++] |
Date: |
Sun, 12 May 2002 22:55:57 +0200 |
Hi everybody,
i was playing around with GCC and its configuration.
I was able to compile GCC for AVR with C++ support,
thanks for that URL to a patch that i got by mail.
In that patch, basically the following things are done:
"configure.in" is patched to add target-libiberty,
${libstdcxx_version} and ${libgcj} to noconfigdirs.
gcc/config/avr/avr.h defines LIBSTDCXX to ""
gcc/cp/g++specs.c adds LIBSTDCXX only if
strlen(LIBSTDCXX) < 0 (NEVER, with that patch in avr.h)
I now started a short test project (at the bottom of this
email). But sadly it doesn't compile:
avr-g++ -mmcu=avr5 -nostdlib -Wa,-ahslnd=list/main.lst \
-c main.c -o obj/main.o
avr-g++ -mmcu=avr5 -nostdlib -Wa,-ahslnd=list/test.lst \
-c test.cc -o obj/test.o
avr-g++ -mmcu=avr5 -nostdlib -o qwe.elf obj/main.o obj/test.o
obj/test.o: In function `in_test':
obj/test.o(.text+0x34): undefined reference to \
`__gxx_personality_sj0'
obj/test.o(.text+0x36): undefined reference to \
`__gxx_personality_sj0'
obj/test.o(.text+0x64): undefined reference to \
`_Unwind_SjLj_Register'
obj/test.o(.text+0xd6): undefined reference to \
`_Unwind_SjLj_Resume'
obj/test.o(.text+0xee): undefined reference to \
`_Unwind_SjLj_Unregister'
make: *** [qwe.elf] Error 1
It seems, "avr-g++" doesn't behave as i expected it...
And it also seems it expects some functions
from "$(libstdcxx_version)" that are missing now.
Is there somewhere a smaller replacement or
substitution "libstdc++"?
What can i change to make a simple project compile and link?
How do i need to configure and compile gcc to work properly?
Do i make any other error?
Regards,
Torsten.
#### common.h
#ifndef COMMON_H
#define COMMON_H
#ifdef __cplusplus
# define CBEGIN extern "C" {
# define CEND }
#else
# define CBEGIN
# define CEND
#endif
#endif
#### test.hh
#ifndef TEST_HH
#define TEST_HH
#include "common.h"
CBEGIN
extern void in_test(void);
CEND
#endif
#### main.h
#ifndef MAIN_H
#define MAIN_H
#include "common.h"
CBEGIN
extern int var;
extern void in_main(void);
CEND
#endif
#### main.c
#include "main.h"
#include "test.hh"
int var;
void in_main(void) {
var += 4;
}
int main(int argc, char** argv) {
volatile long long a;
volatile long b;
var = 0;
in_test();
for(a = 0; a < 1000000; a++) {
b = a & 0xff;
b*b;
}
return var;
}
#### test.cc
#include "test.hh"
#include "main.h"
class Abc {
public:
Abc() {
}
~Abc() {
}
void func(void) {
var += 8;
}
};
void in_test(void) {
Abc a;
a.func();
var += 7;
in_main();
}
> Hallo,
> Wenn du keinen Mega128 support brauchst, kannst du mein Script
> von http://members.telering.at/jessich/reinhard/avr/index.html
> laden.
> Fertige RPMs kannst du auf
> http://freesoftware.fsf.org/download/simulavr/binaries/ finden.
> Dieser Version hat auch Mega128 support.
>
> Grüße
> Reinhard
avr-gcc-list at http://avr1.org