[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[microblaze-uclinux] c++ on microblaze
Hi John,
I have tried to compile c++ using the mb-g++ und uClinux. However, I didn't
get the STLport lib compiled properly. Furtheron, when using destructors
or new and delete uin my c++ demo program I got the following erros:
'bad reloc type 10' or 'undefined reference to _heap'
Do you use c++ in your microblaze project? Do you have
some hints where these errors may result from ? (Maybe
mb-g++ or eld2flt are implemented improperly...)
regards,
Frank
mb-g++ -c -I/projects/uclinux/lib/gcc-lib/microblaze/2.95.3-4/include -I.
-IDataTypes -fno-common -Wall -mno-xl-soft-mul -mxl-barrel-shift
-mno-xl-soft-div -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -nostdinc
-I/projects/uclinux/uClinux-dist/include
-I/projects/uclinux/uClinux-dist/include/include -fno-builtin
-fno-exceptions -o helloworld.o helloworld.cxx
helloworld.cxx: In function `int main(int, char **)':
helloworld.cxx:68: warning: unsigned int format, pointer arg (arg 2)
mb-g++ -o cxx_helloworld helloworld.o
/projects/uclinux/lib/gcc-lib/microblaze/2.95.3-4/libstdc++.a
/projects/uclinux/uClinux-dist/lib/crt0.o -lm -liberty -lc
/projects/uclinux/bin/../lib/gcc-lib/microblaze/2.95.3-4/./libgcc.a
/projects/uclinux/bin/../lib/gcc-lib/microblaze/2.95.3-4/./../../../../micro
blaze/lib/libc_hard_shift.a -lc -lgcc -nostdlib -nostartfiles
-L/projects/uclinux/uClinux-dist/lib -Wl,-elf2flt
ERROR: bad reloc type 10
ERROR: bad reloc type 10
ERROR: bad reloc type 10
...
ERROR: bad reloc type 10
ERROR: bad reloc type 10
ERROR: bad reloc type 10
126 bad relocs
make: *** [cxx_helloworld] Fehler 1
hello world cpp file
----------------------------------------------------------------------------
--------------------------------------
#include <stdio.h>
#include <stdlib.h>
class moresimple
{
public:
moresimple() { ; }
///virtual void dummy() = 0;
//void dummy() { ; }
//virtual int bla(int);
};
class simple : public moresimple
{
public:
int i;
simple(){ i = 37;};
//~simple(){};
int printfg(){ return i;};
void set(int g) {i = g;};
void dummy() { ; };
//virtual int bla(int);
};
int main(int argc, char *argv[])
{
simple s;
FILE *file_ptr;
int b = s.printfg();
printf("Hello, world\n");
printf("init %d\n",b);
s.set(56);
printf("after set %d\n", s.printfg());
/*** Now that we know the mode is valid, try to open the file ***/
file_ptr = fopen ("/usr/test.txt", "w+" );
if (!file_ptr)
{
fprintf ( stderr, "ERROR: %s could not be opened\n", "/usr/test.txt"
);
exit ( EXIT_FAILURE );
}
else
{
fprintf (stderr, "SUCCESS: File %s open with mode w+\n",
"/usr/test.txt");
fprintf (file_ptr, "SUCCESS: b = %d\n", b);
fclose(file_ptr);
}
int* var = new int[100];
int i;
for (i=0;i<100;i++) var[i] = i;
for (i=0;i<100;i++) printf("%d ",var[i]);
int* v = var;
for (i=0;i<100;i++){
printf("%d ",*v);
v++;
}
printf("pointer = 0x%08x", var);
free((void*)var);
return 0;
}
----------------------------------------------------------------------------
-----------------------------------------------------
Makefile
EXE1 = cxx_helloworld
CXX = mb-g++
CCOBJS1=helloworld.o
CCSRC1=helloworld.cxx
CXXFLAGS = -I/projects/uclinux/lib/gcc-lib/microblaze/2.95.3-4/include -I.
-IDataTypes -fno-common -Wall -mno-xl-soft-mul -mxl-barrel-shift
-mno-xl-soft-div -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -nostdinc
-I/projects/uclinux/uClinux-dist/include
-I/projects/uclinux/uClinux-dist/include/include -fno-builtin
-fno-exceptions
CXX_LDFLAGS =
CXXLIBS = /projects/uclinux/lib/gcc-lib/microblaze/2.95.3-4/libstdc++.a
/projects/uclinux/uClinux-dist/lib/crt0.o -lm -liberty -lc
/projects/uclinux/bin/../lib/gcc-lib/microblaze/2.95.3-4/./libgcc.a
/projects/uclinux/bin/../lib/gcc-lib/microblaze/2.95.3-4/./../../../../micro
blaze/lib/libc_hard_shift.a -lc -lgcc -nostdlib -nostartfiles
-L/projects/uclinux/uClinux-dist/lib -Wl,-elf2flt
all: $(EXE1)
$(EXE1): $(CCOBJS1) Makefile
$(CXX) $(CXX_LDFLAGS) -o $@ $(CCOBJS1) $(LIBM) $(CXXLIBS)
-cp $(EXE1) /mnt/hgfs/exchange
$(CCOBJS1): $(CCSRC1)
$(CXX) -c $(CXXFLAGS) -o $@ $(CCSRC1)
romfs:
$(ROMFSINST) /bin/$(EXE1)
clean:
rm -f *.o $(EXE1) *.gdb
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/