[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/