heh.pl
Kanał informacyjny Heh.pl


Wtorek 30 kwietnia 2024 r.

artykuły | abc komputera (archiwum) | forum dyskusyjne | redakcja


Temat

Makefile + GCC POMOCY !!


213.77.200.* napisał:
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 ??

212.244.94.* napisał:

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 icon_cool3.gif

213.77.200.* napisał:
PATRZ COS NAROBIL !!!! icon_razz.gif


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 !!icon_razz.gif
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 !!!

212.244.94.* napisał:

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.

213.77.200.* napisał:
No STARY masz u mnie takieeeeeeeeeeeeeeee piwsko !!!!! icon_biggrin3.gif

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 icon_sad2.gif ).

212.244.94.* napisał:

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 icon_cool3.gif

213.77.200.* napisał:
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 !!!

213.77.200.* napisał:
Oki miszczu qwa juz ni trzeba sam sobie poradzilem icon_razz.gif
Ale dzieki za poprzednie!!

212.244.94.* napisał:

No widzisz. Jak chcesz to umiesz icon_cool3.gif

Podobne tematy


Działy









Copyright © 2002-2024 | Prywatność | Load: 1.29 | SQL: 1 | Uptime: 22 days, 8:29 h:m | Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl