Skocz do zawartości
mangado

Problem z linkerem LD (DJGPP c++)

Polecane posty

Mam takiego problema. (DJGPP)

 

Pisze sobie OS-a (fasm) i on tam sobie udaje, że działa.

Ale zachciało mi się pisać do niego programiki w c i c++.

Jak mam programik w pure C to jest ok i działa!

Niestety gdy pojawi się tam obiekt lub struktura to linker krzyczy:

undefined reference to '___gxx_personality_v0'

 

programik kompilowany jest do formatu binary.

 

Nie pomogło użycie g++ itp.

 

nie uzylem makefile tylko *.bat-a

wygląda tak:

 

gxx -x c++ main.cpp -O2 -fomit-frame-pointer -c -o main.o 
gxx -x c++ rys.cpp -O2 -fomit-frame-pointer -c -o rys.o
ld -Tprg3.ld -o prg3.bin main.o rys.o

 

A plik prg3.ld wygląda tak:

 

OUTPUT_FORMAT("binary")
ENTRY("_main")

 

pliki main.o i rys.o powstały

ale linker się zbuntował

 

 

Co prawda udało się to skompilować w ten sposób:

 

gxx main.cpp -fomit-frame-pointer -c -o prg3.bin

 

Ale ten programik był bardzo rozbiegany po pamięci

 

Mój OSesek dla procesów organizuje pamięć tak:

0-0xC0000000 - przestrzen adresowa dla procesu

0xBFFFE000 (i w dół) - stos

powyżej 0xC0000000 (3GiB), kod systemu

 

A ten programik, skompilowany metodą 2-gą próbuje, i to na samym początku odwołać sie

pod adres powyżej 3GiB...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×