Skocz do zawartości
amdek

Makefile + GCC POMOCY !!

Rekomendowane odpowiedzi

Makefile + GCC POMOCY !!!

 

Mam projekt z kilkoma plikami .cpp i .h .

 

w poszczegolnych plikach includuje:

 

edytor.h : konsolalin.h , listdocattr.h , kontener.h

dokument.h : listdocattr.h

konsola.h : screen.h

screen.h : nic ,nie ma nawet screen.cpp

konsolalin.h : konsola.h

kontener.h : dokument.h

listatemplate.h : nic nie mam tez .cpp

listdocattr.h : listatemplate.h screen.h

 

edit.cpp (tu jest main i tu tworze obiekt z edytor.h) : edytor.h

edytor.cpp : edytor.h

konsola.cpp : konsola.h

konsolalin.cpp : konsolalin.h

dokument.cpp : dokument.h

kontener.cpp : kontener.h

listdocattr.cpp : listdocattr.h

 

a stworzony przeze mnie makefile wyglada tak :

 

 

LDFLAGS := -lcurses

CFLAGS := -x c++

.cpp .o :

$(CC) $(CFLAGS) -c $*.cc

 

.SUFFIXES : .o .cpp

 

(1)edit : edit.o edytor.o kontener.o dokument.o listdocattr.o konsolalin.o konsola.o screen.o

$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

 

edit.o : edit.cpp edytor.h

edytor.o : edytor.cpp edytor.h kontener.h listdocattr.h konsolalin.h konsolawin.h

kontener.o : kontener.cpp kontener.h dokument.h

dokument.o : dokument.cpp dokument.h listdocattr.h screen.h

listdocattr.o : listdocattr.cpp listdocattr.h screen.h listatemplate.h

konsolawin.o : konsolawin.cpp konsolawin.h konsola.h

konsolalin.o : konsolalin.cpp konsolalin.h konsola.h

konsola.o : konsola.cpp konsola.h screen.h

screen.o : screen.h

 

Dlaczego jak tylko zmienie kolejnosc w (1) to mi wywala blad przy

tworzeniu innego *.o (teraz wywali w konsola.o). Nie sa to bledy

errory ze zlej funcji uzylem albo co innego po prostu wywala ze jakis

parse error czy jakis qwa token @ albo E nieznany ??!!(nic nie mowie

o kiklu setkach warningow o jakis NULLach chodz wszysko pod VC kompiluje sie

bez problemu !!!)

Te errory to :

 

konsola.o:3:37: warning: null character(s) ignored

konsola.o:4: stray '5' in program

konsola.o:4: stray '4' in program

konsola.o:4: parse error before `@' token

konsola.o:4:4: warning: null character(s) ignored

konsola.o:4: stray '20' in program

konsola.o:4:9: warning: null character(s) ignored

 

O co chodzi ?? Jesli ktos nie zrozumial tych zagniezdzen plikow to tylko poowiedzcie

jaka powinna byc kolejnosc w(1) i czy reszta jest ok ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

CFLAGS := -x c++

...

(1)edit : edit.o konsolalin.o konsola.o screen.o....

$(CC)  $(CFLAGS) $^ -o $@ $(LDFLAGS)

Przy linkowaniu nie możesz specyfikować języka na c++ bo to są pliki .o (już przekompilowane). Popraw CFLAGS dla tego przypadku (wywal bo w tym przypadku nie kompilujesz) i będzie ok 8)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

PATRZ COS NAROBIL !!!! :P

 

 

cc edit.o edytor.o kontener.o dokument.o listdocattr.o konsolalin.o konsola.o -o edit -lcurses

edit.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

edytor.o: In function `ConvertIntToString(int, char*)':

edytor.o(.text+0x959): undefined reference to `pow'

edytor.o(.text+0x9b8): undefined reference to `pow'

edytor.o(.text+0xa0f): undefined reference to `pow'

edytor.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

kontener.o: In function `Kontener::Dodaj(_IO_FILE*, EditScreen)':

kontener.o(.text+0x32): undefined reference to `operator new(unsigned)'

kontener.o(.text+0x93): undefined reference to `operator delete(void*)'

kontener.o(.text+0xb8): undefined reference to `operator delete(void*)'

kontener.o(.text+0xd8): undefined reference to `operator new(unsigned)'

kontener.o(.text+0x11a): undefined reference to `operator delete(void*)'

kontener.o(.text+0x13f): undefined reference to `operator delete(void*)'

kontener.o(.text+0x159): undefined reference to `operator new(unsigned)'

kontener.o(.text+0x1a5): undefined reference to `operator delete(void*)'

kontener.o(.text+0x1ca): undefined reference to `operator delete(void*)'

kontener.o: In function `Kontener::Usun(int)':

kontener.o(.text+0x3d0): undefined reference to `operator delete(void*)'

kontener.o: In function `Kontener::~Kontener [not-in-charge]()':

kontener.o(.text+0x417): undefined reference to `operator delete(void*)'

kontener.o: In function `Kontener::~Kontener [in-charge]()':

kontener.o(.text+0x451): undefined reference to `operator delete(void*)'

kontener.o(.gnu.linkonce.t._ZN5ListaI8DokumentED1Ev+0x33): more undefined references to `operator delete(void*)' follow

kontener.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

dokument.o: In function `Dokument::Dokument[not-in-charge](_IO_FILE*, int, EditScreen)':

dokument.o(.text+0x4b): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x8b): undefined reference to `operator delete(void*)'

dokument.o(.text+0xb0): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::Dokument[in-charge](_IO_FILE*, int, EditScreen)':

dokument.o(.text+0x143): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x183): undefined reference to `operator delete(void*)'

dokument.o(.text+0x1a8): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::StworzTresc(_IO_FILE*)':

dokument.o(.text+0x2c3): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x2e6): undefined reference to `operator delete(void*)'

dokument.o(.text+0x2fb): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x33e): undefined reference to `operator delete(void*)'

dokument.o(.text+0x363): undefined reference to `operator delete(void*)'

dokument.o(.text+0x396): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x3d8): undefined reference to `operator delete(void*)'

dokument.o(.text+0x3fd): undefined reference to `operator delete(void*)'

dokument.o(.text+0x445): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x468): undefined reference to `operator delete(void*)'

dokument.o(.text+0x47d): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x4c0): undefined reference to `operator delete(void*)'

dokument.o(.text+0x4e5): undefined reference to `operator delete(void*)'

dokument.o(.text+0x525): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x568): undefined reference to `operator delete(void*)'

dokument.o(.text+0x58d): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::WstawZnak(int, EditScreen, int)':

dokument.o(.text+0x714): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x737): undefined reference to `operator delete(void*)'

dokument.o(.text+0x74c): undefined reference to `operator new(unsigned)'

dokument.o(.text+0x79f): undefined reference to `operator delete(void*)'

dokument.o(.text+0x7c4): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::Delete(EditScreen)':

dokument.o(.text+0x927): undefined reference to `operator delete(void*)'

dokument.o(.text+0xa3a): undefined reference to `operator delete(void*)'

dokument.o(.text+0xa62): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::Enter(EditScreen)':

dokument.o(.text+0xa8c): undefined reference to `operator new(unsigned)'

dokument.o(.text+0xaa2): undefined reference to `operator new(unsigned)'

dokument.o(.text+0xaee): undefined reference to `operator delete(void*)'

dokument.o(.text+0xb13): undefined reference to `operator delete(void*)'

dokument.o(.text+0xb51): undefined reference to `operator new(unsigned)'

dokument.o(.text+0xba9): undefined reference to `operator delete(void*)'

dokument.o(.text+0xbce): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::Backspace(EditScreen)':

dokument.o(.text+0xdb2): undefined reference to `operator delete(void*)'

dokument.o(.text+0xdda): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::Tab(EditScreen)':

dokument.o(.text+0xe38): undefined reference to `operator new(unsigned)'

dokument.o(.text+0xe5b): undefined reference to `operator delete(void*)'

dokument.o(.text+0xe70): undefined reference to `operator new(unsigned)'

dokument.o(.text+0xec3): undefined reference to `operator delete(void*)'

dokument.o(.text+0xee8): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::~Dokument [not-in-charge]()':

dokument.o(.text+0x1fe7): undefined reference to `operator delete(void*)'

dokument.o: In function `Dokument::~Dokument [in-charge]()':

dokument.o(.text+0x2019): undefined reference to `operator delete(void*)'

dokument.o: In function `Lista<char>::~Lista [in-charge]()':

dokument.o(.gnu.linkonce.t._ZN5ListaIcED1Ev+0x19): undefined reference to `operator delete(void*)'

dokument.o(.gnu.linkonce.t._ZN5ListaIcED1Ev+0x4b): more undefined references to `operator delete(void*)' follow

dokument.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

konsolalin.o(.gnu.linkonce.d._ZTI10KonsolaLin+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0x8): undefined reference to `__cxa_pure_virtual'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0xc): undefined reference to `__cxa_pure_virtual'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0x10): undefined reference to `__cxa_pure_virtual'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0x14): undefined reference to `__cxa_pure_virtual'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0x18): undefined reference to `__cxa_pure_virtual'

konsolalin.o(.gnu.linkonce.d._ZTV7Konsola+0x1c): more undefined references to `__cxa_pure_virtual' follow

konsolalin.o(.gnu.linkonce.d._ZTI7Konsola+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'

konsolalin.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

konsola.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

collect2: ld returned 1 exit status

make: *** [edit] Błąd 1

 

 

Tak jak mowiles w makefilu zrobilem zamiast:

 

$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

to:

$(CC) $^ -o $@ $(LDFLAGS)

 

i odpalilem !!!!

 

TYLKO mi nie mow ze pod linuxem nie ma new i delete bo chyba

sie pochlastam !!:P

Gdzie zobaczyc czy dana funkcja jest pod linuxem !!??

Wim ze ten komunikat :

konsola.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

mowi ze jest zly kompilator chyba !?

I oc ja mam teraz zrobic ?! Ten program nie ma bledow !!

Jestem tego pewien !!

 

POMOCY !!!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

PATRZ COS NAROBIL !!!! :P

...

Masa niepotrzebnych smieci

Czy mógłbyś następnym razem okroić program do jakiś kilkunastu linii i wkleić to co sprawia problem?

do bibliotek dodaj -lstdc++ i będzie ok.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No STARY masz u mnie takieeeeeeeeeeeeeeee piwsko !!!!! :D

 

Wszystko poszlo jak trza !!!

 

Tylko znowu mam troche inny problem.

Z konsoli odczytuje wcisniety znak getch() mam ustawione noecho().

I za zadne skarby nie moge wcisnac jakiegos f1,f2 chyba insert tez nie !!

bo od razu wywala z programu !!

Getcha analizuje po windowsowemu czyli jak 0 to jeszcze raz getch() i teraz mi powinien wykryc f1.

Probowalem z crmode(), raw(),keypad(WINDOW*,FALSE) ale nic nie pomaga !!! Ciagle mnie wywala !!

 

Czy jest mozliwosc zeby ten windowsowy sposob zadzialal ???

Czy musze napisac cos co bedzie analizowalo czy KEY_ ... i jak to w sumie napisac ???? (qwa myslalem ze juz mam ten projekt z glowy :( ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No STARY masz u mnie takieeeeeeeeeeeeeeee piwsko !!!!! :D 

He, jakbym dostał chociaż 10% obiecanego od początku studiów alkoholu założyłbym pub :)

 

Tylko znowu mam troche inny problem.

Obetnij program do <20 linii, a otrzymasz rozwiązanie.

Obetnij program do <100 linii, a może go obejrze.

Nie podawaj w ogóle kodu, a pozostanie Ci jedynie złudna nadzieja, że będzie mi się chciało napisać podobny i podam rozwiązanie na srebrnej tacy 8)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jest to edytor tekstu ktory ma dzialac pod linuksowa konsola !!

Pod windosem dziala, ale chodzi o to ze pod linuxem jak tylko wcisne F1 to mi wywala z programu !!!! A powinno wyswietlic np. komunikat ze to i to !!!!

 

Odczytuje ASCII najpierw jednym getch() i jesli on == 0 to jeszcze jeden getch() i jesli ten == 59 to znaczy ze jest to F1 i powinno mi wywalic komunikat !!!! Ale zamiast tego pod linuxem wywala mniez programu do konsoli !!!! Czemu to nie dziala !? Czy trzeba jakas funkcje wywolac ??

 

Probowalem crmode(), raw() ale dalej nic !!!!

Wiesz cos na ten temat czy nie !!!!???? Potrzebne mi to jest na zaraz !!!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...