siomek Napisano Sierpień 26, 2005 Zgłoszenie Share Napisano Sierpień 26, 2005 Witam, Mam następujący problem. Gdy skompiluję programw C/C++, fakt czy zadziała (chociaż nie zawsze) zależy od flag kompilatora. Oczywiście najlepiej działa przy -Os. Jednak gdy program uruchomię pod debuggerem, działa poprawnie. Jak mam to rozumieć? Da się skompilować program "uważnie", tzn. żeby kompilator najdokładniej "przyjrzał się" wszystkiemu? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gajownik Napisano Sierpień 26, 2005 Zgłoszenie Share Napisano Sierpień 26, 2005 Hmm... To może być błąd kompilatora. Która wersja GCC? Z tym działaniem pod debuggerem to już gdzies kilka razy widziałem, ale nie wiem z czego to wynikało. Najlepiej by było, gdyby udało Ci się zrobić jakąś minimalną wersję progamu, przy której raz program działa, a raz nie. Trochę za wysokie progi jak dla mnie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
siomek Napisano Sierpień 26, 2005 Autor Zgłoszenie Share Napisano Sierpień 26, 2005 Hmm... To może być błąd kompilatora. Która wersja GCC? Z tym działaniem pod debuggerem to już gdzies kilka razy widziałem, ale nie wiem z czego to wynikało. Najlepiej by było, gdyby udało Ci się zrobić jakąś minimalną wersję progamu, przy której raz program działa, a raz nie. Trochę za wysokie progi jak dla mnie I tu zaczynają się schody. Bo pod linuxem nie ma problemu. Działa bez żadnych flag. Co najwyżej flagi pomagają w szybkości i rozmiarze pliku. Przyznam się szczerze, że ten problem wynikł pod win32, mingw 3.8, gcc 3.4.2. <UWAGA> Czemu nigdzie tego nie piszą...Przy dużej liczbie obliczeń numerycznych stosować flagi: -Os -ffast-math I teraz działa :-) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gajownik Napisano Sierpień 27, 2005 Zgłoszenie Share Napisano Sierpień 27, 2005 Czemu nigdzie tego nie piszą...Przy dużej liczbie obliczeń numerycznych stosować flagi: -Os -ffast-math Dlatego → http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gc...st_002dmath-522 :-) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
tomcio15 Napisano Sierpień 27, 2005 Zgłoszenie Share Napisano Sierpień 27, 2005 Ja mam podobne klopoty z Fedorowatym GCC 4, juz zwatpilem w swoje umiejetnosci, kompilator rozdmuchiwal kod w czystym C, a sama aplikacja zachowala sie dosc dziwnie (przerywala w najdziwniejszych miejscach, zwalniala itp.), a pod GCC 3.2.x program kompiluje sie i dziala wysmienicie... I stad moje pytanka: 1. Powie mi ktos czemu te barany (developerzy Fedory) wybrali eksperymentalne GCC 4 a nie stabilne np. GCC 3.4.4 jako domysly kompilator!? 2. Ma ktos jakies materialy na temat nprzystosowywania programow do kompilacji z GCC 4? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gajownik Napisano Sierpień 27, 2005 Zgłoszenie Share Napisano Sierpień 27, 2005 kompilator rozdmuchiwal kod w czystym C, a sama aplikacja zachowala sie dosc dziwnie (przerywala w najdziwniejszych miejscach, zwalniala itp.), a pod GCC 3.2.x program kompiluje sie i dziala wysmienicie... Były jakies ostrzeżenia podczas kompilacji? Używasz najnowszego gcc 4.0.1? 1. Powie mi ktos czemu te barany (developerzy Fedory) wybrali eksperymentalne GCC 4 a nie stabilne np. GCC 3.4.4 jako domysly kompilator!? Bo GCC 4 nie jest eksperymentalne. Już o tym pisałem tutaj → http://www.fedora.pl/site/forum/index.php?...?showtopic=6115 Przeczytaj sobie komentarze deweloperów GCC → http://kerneltrap.org/node/5393#comment /edit/ Przypomniał mi się jeszcze inny argument: w starszych wersjach nie ma gcj → brak obsługi Javy. Pociąga to za sobą brak OO.o2 czy Eclipse. 2. Ma ktos jakies materialy na temat nprzystosowywania programow do kompilacji z GCC 4? Hmm.. Można przeczytać release notes i zobaczyć co się pozmienało w porównaniu do poprzedniej wersji → http://gcc.gnu.org/gcc-4.0/changes.html Inne źródła nie są mi znane :/ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
tomcio15 Napisano Sierpień 27, 2005 Zgłoszenie Share Napisano Sierpień 27, 2005 Z tym czy GCC 4 jest juz uzyteczny w 100% to bym sie nie zgodzil, zobaczcie jak wyglada (chodzi o wielkosc, a co za tym idzie roznice w kompilacie) proste "Hello world!" zbudowane przez GCC 3 i GCC 4 i nie chodzi tu o optymalizacje... Poza tym mialem przyjemnosc podyskutowac z developerem Gentoo, a mial on na temat stabilnosci GCC 4 inne zdanie niz gajownik, ale mniejsza o to. @ gajopwnik, wielkie dzieki za te materialy bo mi pomogly, ale gdyby ktos jeszcze cos dorzucil to bym sie nie gniewal Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
siomek Napisano Sierpień 29, 2005 Autor Zgłoszenie Share Napisano Sierpień 29, 2005 Z tym czy GCC 4 jest juz uzyteczny w 100% to bym sie nie zgodzil, zobaczcie jak wyglada (chodzi o wielkosc, a co za tym idzie roznice w kompilacie) proste "Hello world!" zbudowane przez GCC 3 i GCC 4 i nie chodzi tu o optymalizacje... Poza tym mialem przyjemnosc podyskutowac z developerem Gentoo, a mial on na temat stabilnosci GCC 4 inne zdanie niz gajownik, ale mniejsza o to. @ gajopwnik, wielkie dzieki za te materialy bo mi pomogly, ale gdyby ktos jeszcze cos dorzucil to bym sie nie gniewal A moim zdaniem to tylko czyste gderanie ludzi, którzy muszą znowu czytać dokumentację, bo zmieniły się standardy implementacji funkcji i klas szablonowych, obsługi sytuacji wyjątkowych i wielu innych rzeczy. To dobrze, że gcc zmierza do zgodności ze standardem Ansi C++. Zawsze da się to wszystko teleportować na wyższą wersję. To oczywiście problem, ale spróbujcie coś takiego zrobić z kodem z Borland C++ Buildera. A tak na boku. Jeśli nie odkrywa się nowych błędów, nie robi nowych wersji to znaczy że język programowania jest stary i czas na przesiadkę na coś nowszego i wygodniejszego :-) A tak (_wogóle_ → w ogóle) ORT na marginesie. Teleportowanie kodu procedur numerycznych do M$ to nie najlepszy pomysł. Numerycznie dla mnie ten system jest do bani. Udało mi sie napisać wiele programów z procedurami numerycznymi, ale niewiele uruchomić pod MS Pod *nix'ami to chodzi ładnie i na dodatek da się tuningować. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
tomcio15 Napisano Sierpień 29, 2005 Zgłoszenie Share Napisano Sierpień 29, 2005 Racja w kwestii C++ nowe gcc jest bardziej radykalne, ale nie podjeto wiekszych krokow w zwiazku ze starym dobrym C. Ogolnie zgadzam sie z moim przedmuwca → przedmówcą i chcialem zauwacycx jedna ciekawa rzecz, mianbowicie zaczalem portowac moja aplikacje z kodu generowanego przez Glade na obsluge poprzez Libglade. I podczas przepisywania programu - a juz spora czesc dziala na Libglade - nie mam klopotow z kompilatami wypluwanymi przez gcc4. Stad konkluzja - czyzby kod generowany przez Glade byl nie kompatybilny z GCC4? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gajownik Napisano Sierpień 30, 2005 Zgłoszenie Share Napisano Sierpień 30, 2005 Racja w kwestii C++ nowe gcc jest bardziej radykalne GCC 3.4 bardziej podniosło poprzeczkę ;-) http://www.redhat.com/archives/fedora-deve...e/msg01260.html ale nie podjeto wiekszych krokow w zwiazku ze starym dobrym C. Gdyby robili większe zmiany, to ludzie jeszcze bardziej by psioczyli. W GCC 4 największą chyba zmianą było włączenie tree-ssa. Dopiero teraz zacznie się cała zabawa w optymalizację wynikowego kodu :] Wspomniana funkcja pozwoliła choćby na łatwiejsze zaimplementowanie Stack Smashing Protection → http://gcc.gnu.org/ml/gcc-patches/2005-05/...5/msg01193.html Dzięki deweloperom RedHata Fedora będzie jeszcze bardziej bezpieczna :] Efekty już widać → https://bugzilla.redhat.com/bugzilla/show_b...gi?id=166626#c6 A wracając do kompilacji C i zgłaszanych błędów, to choćby takie rzeczy zostały zabronione → http://gcc.gnu.org/ml/gcc/2005-02/msg00054.html lub lepiej informuje się teraz o operacjach na liczbach ze znakiem/bez znaku. Te ostrzeżenia moga wydawać się błahe, ale prawda jest inna. Warto zapoznać się z tym artykułem → http://www.theepochtimes.com/news/5-7-5/30084.html Stad konkluzja - czyzby kod generowany przez Glade byl nie kompatybilny z GCC4? Być może. Warto by było sprawdzić wersję rozwojową lub poszukać na listach malingowych projektu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
tomcio15 Napisano Sierpień 30, 2005 Zgłoszenie Share Napisano Sierpień 30, 2005 W Glade3 juz wycofali sie z autogenerowania kodu, a budowa GUI oprze sie na parserze XML - Libglade. I dobrze, bo z tym generowanym kodem, zawsze byly klopoty... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
siomek Napisano Wrzesień 7, 2005 Autor Zgłoszenie Share Napisano Wrzesień 7, 2005 Zastanawia mnie jeszcze jedna sprawa. Czy to możliwe, że program (pod win32 też) chodzi tylko po skompilowaniu z flagą "-Os"? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gajownik Napisano Wrzesień 7, 2005 Zgłoszenie Share Napisano Wrzesień 7, 2005 Hmm... Ja bym stawiał na błąd kompilatora. Trochę to dziwne, że działa tylko z flagą -Os, bo najbardziej przetestowana jest -O2 i to z nią wszystko powinno chodzić poprawnie :/ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się