Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Mam problem z kompilacją pliku interfaces.c, który jest generowany przez glade-2, do kompilacji tego pliku potrzebne jest 1,8GB ram`u (problem tymczasowo rozwiązałem zwiększajać swap`a do 4GB:), gcc v3.3.5 wywala błąd:
cc1: out of memory allocating 515991120 bytes after a total of 27336704 bytes
make: *** [interface.o] Błąd 1
Dodam jeszcze ze owy plik zajmuje ok 900KB, cała aplikacja po skompilowaniu niewiele ponad 2MB, Nieliniowy wzorst zapotrzebowania na ram zauważyłem przy dodawaniu w glade kolejnych stron(aktualnie jest ich 8) do widget NoteBook, na kazdej z takich strona jest umieszczonych spora liczba widget-ów.
Troche mnie ta sytuacja niepokoi, ze względu że plik interface.c to dzieło glada, i podzielenie go na mniejsze pliki wiązało by sie z całkowitą rezygnacją z glada i mnóstwem dodatkowej roboty. Szukam jakiegoś normalnego rozwiązania bo zwiększanie pamięci swap nie wydaje sie być przyszłościowe, będe wdzięczny za jakiekolwiek rady.
Offline
Wydaje mi się że takie zapotrzebowanie na pamięć, przy kompilacji takiego pliku, nie jest normalne.
Albo to jest błąd w glade albo w gcc.
Czy ten plik interfaces.c jest stworzony przez Ciebie?
Jesli tak to polecam przniesienie sie z gtk na wxwidgets, jak dla mnie jest sporo wygodniejsze.
Maksymalny rozmiar alokowanej pamieci mozna zwiekszyc z 4 go 64GB trzeba wkomilowac w kernel opcje high memory (czy jakos tak).
Offline
Plik interfaces.c jest tworzony przez glada znajduje sie w nim implementacja GUI aplikacji, ja nigdy w nim nic nie zmieniałem. Sama aplikacja zawiera spora ilość widgetów i jest dość rozbudowana jesli chodzi o GUI a przeniesienie czegoś takiego na wxwidgets wiązało by sie dla mnie z ogromna ilością pracy. Budowniczy interfejsów glade miał ułatwić mi życie, a stało sie odwrotnie czyżby nadawał on sie tylko do małych programików?
Offline
Spróbuj inną wersje gcc.
Zupgrejduj tez pakiet libgtk-dev i "podobne". Może uzywasz starszych w których jest jakis bug. Zobacz tez czy na innym systemie to się skompiluje.
Offline
Własnie dzisiaj chciałem spróbować z nowszym gcc napotkałem problemy apt pobrał 200MB upgradu (paczki testing/stable) i na koniec wywalił coś że nie może usunąć e2fsprogs ale moge spróbować z opcją force, nie ryzykowałem. powinienem sie czegoś obawiać są jakieś przeciwskazania? Zaznaczam że zalezy mi na czasie i jestem początkującym userem debiana.
Na komputerze domowym (dystrybucja tylko stable) postanowiłem zrobić upgrade gcc i innych potrzebnych bibliotek po walce z kilkoma niespełnionymi zależnościami ostatecznie apt z opcja f wywalił z systemu większość pakietów dev:(.
Tutaj rodzi sie moje drugie pytanie, warto mieszać paczki róznych dystrybucji (zwłaszcza chodzi o takie pakiety jak gcc, libc, cpp) jesli tak to jak robić to szybko i skutecznie.Czy lepiej przejść na pakiety tylko jednej dystrybucji testing a może unstable?
Offline
Moim zdaniem lepiej jest niemieszac dystrybucji, wyjątkiem jest sytuacja gdy potrzebujemy jjakiegos programu który jest w innej a nie ma w naszej dystrybucji.
Offline
a co mam zrobić z kompem z pracy, niechciałbym żeby mi tam coś padło, jest problem ze zrobieniem update wywala cos na temat e2fsprog spotkałeś sie z tym może?
Offline
Jaką masz dystrybucje i do jakiej chcesz upgrejdowac, lub jakie chcesz wymieszac ?
Offline
Mam mieszaną w /etc/apt/source.list są wersje testowe i stabilne i chciałbym zrobić upgrade ale jest problem:
631 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 662 nie zaktualizowanych.
.....
E: To uruchomienie programu będzie wymagało tymczasowego usunięcia istotnego pakietu e2fsprogs z powodu pętli konfliktów/pre-zależności. Często nie oznacza to nic dobrego, ale jeśli naprawdę chcesz to zrobić, włącz opcję APT::Force-LoopBreak.
E: Internal Error, Could not early remove e2fsprogs
Na tym komputerze pracje więc nie zaryzykowałem.
Offline