Skocz do zawartości
morgholm

Problem z flagami podczas kompilacji Crystal Space

Rekomendowane odpowiedzi

Po dosc dlugiej przerwie pojawiam sie ponownie, i od razu z dziwnym problemem:

 

Mianowicie kompiluje sobie engine Grystal Space 0.96r003, i segfaultuje mi na kilku plikach, m.in. na tym:

 

plugins/engine/3d/light.cpp: In constructor'csLightingProcessInfo::csLightingProcessInfo(csLight*,bool)':plugins/engine/3d/light.cpp:614:internal error:Segmentation fault

Pogrzebalem w kodzie, wydaje sie byc w porzadku (nie jestem specem od C++), wiez wzialem sie za flagi kompilatora. Make domyslnie kompiluje mi CS z flaga -O3. Skompilowalem ten plik "recznie" z flaga -O2, i poszlo bez problemow. Problem polega na tym, ze w /etc/profile mam wpisy:

 

CFLAGS="-O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -ffast-math -pipe -s"CXXFLAGS="-O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -ffast-math -pipe -s"export CFLAGS CXXFLAGS

Pomimo tego wpisu, make i tak "wpycha" tam swoje -O3, a co gorsza architekture rozpoznaje jako i586 i tak ustawia flagi. Szukalem w plikach Makefile i Jamfile po odpaleniu ./configure, zeby to zmienic "recznie" ale nie znalazlem tam zadnych wpisow odnosnie flag kompilatora. Co do architeORT: ORT: ORT: ktury, to uname wywala i586 (mam standardowy kernel) i pewnie stad sie to bierze, ale w jakim pliku konfiguracyjnym mam wpisac flagi dla make zeby bralo je globalnie, skoro z /etc/profile nie chce?

 

Dodam ze zmienne srodowiskowe mam ustawione poprawnie a system to Slackware 9.1.

 

Dziwna sprawa :/

 

Z gory dziekuje za wskazowki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Co do architektury to sie nie dziwie z i586 - kumpel ma K6-2 400MHz i tez mu rozpoznaje jako i586 9najprawdopodobniej taka jestprawda). Co do flag to popatrz do jakiegos innego ./configure'a jak sie ustawia flagi i zastosuj je u siebie. MOze jakos da sie to wymusic. Nie wiem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hm.....

Wszystko byloby ok ale ./configure nie tworzy pliku config.mak, tylko Jamconfig, Jamfile i Jamrules, z czego w Jamrules znalazlem linie:

COMPILER.CFLAGS += "-O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -pipe";COMPILER.C++FLAGS += "-O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -pipe";COMPILER.CFLAGS += "-Wall";COMPILER.C++FLAGS.WARNING.NO_UNUSED ?= "-Wno-unused";COMPILER.C++FLAGS.WARNING.NO_UNINITIALIZED ?= "-Wno-uninitialized";COMPILER.CFLAGS += "-Wno-unknown-pragmas";COMPILER.C++FLAGS.EXCEPTIONS.ENABLE ?= "-fexceptions";COMPILER.C++FLAGS.EXCEPTIONS.DISABLE ?= "-fno-exceptions";COMPILER.C++FLAGS += "-fno-exceptions";COMPILER.CFLAGS += "-pipe";COMPILER.CFLAGS += "-march=i586";COMPILER.CFLAGS.optimize += "-O3";COMPILER.CFLAGS.optimize += "-fomit-frame-pointer";COMPILER.CFLAGS.optimize += "-ffast-math";

Czyli dosc pokazna mieszanke wlasnych ustawien i zmiennych srodowiskowych. Ciekawe ze architekture rozpoznaje jako i586 i march tak ustawia mimo ze ma podane ze ma brac k6 :/ .... No i optimize daje na -O3...

 

W Makefile wpisalem:

INC=-D__CRYSTAL_SPACE__ -fno-exceptions -fno-rtti     -I. -I/opt/cs/include -mcpu=k6 -march=k6     -O2 -fomit-frame-pointer -ffast-math

Tez niewiele to dalo bo podczas kompilacji bierze swoje flagi , ale skad to ja nie wiem - chyba z kosmosu :/

 

Fragment config.log:

configure:1970: checking for suffix of executablesconfigure:1972: gcc -o conftest -O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -pipe
Tu wydaje sie byc wszystko ok, zmienne srodowiskowe dla cc rozpoznaje wlasciwie

 

configure:5476: checking whether to use CPU-specific optimizations... minimumconfigure:5477: checking for code generation flags... -march=i586configure:5478: checking how to enable optimizations... -O3
A tu wsadza swoje "3 grosze", przy podaniu minimalnej optymalizacji (przy maksymalnej dzieja sie jeszcze dziwniejsze rzeczy, np chce strippowac wszystkie liby i usuwa pthread :/ )

 

Jesli ktos wie gdzie jeszcze moga byc w Slackware 9.1 flagi, albo gdzie trzeba je wpisac, lub tez spotkal sie z podobnym problemem, to niech sie ze mna podzieli swoimi uwagami lub zalami

 

Sadzilem ze wiem co nieco o linuxie a okazuje sie ze jestem debil kompletny :/

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

COMPILER.CFLAGS += "-O2 -march=k6 -mcpu=k6 -mmmx -m3dnow -fomit-frame-pointer -pipe";(...)COMPILER.CFLAGS += "-pipe";COMPILER.CFLAGS += "-march=i586";
dwie ostatnie do wywalenia? w sumie -pipe jest dublowane, -march tylko pieprzy ustawienia poprawne..

COMPILER.CFLAGS.optimize += "-O3";(...)
zmienic na -O2?, ew. dopisac march, mcpu albo w ogole skopiowac zawartosc z COMPILER.CFLAGS?

 

Czyli dosc pokazna mieszanke wlasnych ustawien i zmiennych srodowiskowych. Ciekawe ze architekture rozpoznaje jako i586 i march tak ustawia mimo ze ma podane ze ma brac k6 :/ .... No i optimize daje na -O3...  

ten configure robi sieczke dosyc malo strawna, kwiatki w stylku:

configure:6015: checking how to enable optimizationsconfigure:6107: g++ -o conftest -O3  -O2 -march=k6 -mcpu=k6 -mmmx -m3dnow (...)

nie znam sie, za duzo nie pomoge, ale mozna poprobowac ;)

powodzenia i pozdr.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ufff....

 

Powielu kombinacja udalo mi sie wymusic stosowanie odpowiednich flag, ale zabawy z tym co nie miara. Zastanawiam sie nad jednym - Slackware nalezy do dystrybucji raczej przejrzystych jesli chodzi o konfiguracje, malo jest takich "kwiatkow" bo wszystko jest na wierzchu, system niczego nie ukrywa przed uzytkownikiem. Ciekawe jak by to wygladalo np na Mandrake, masakra...

 

Szukalem w necie i znalazlem paczke z CS do slacka 9.1, ale kompilowana na procka i686, wiec raczej odpada ze wzgledu na wydajnosc. Zauwazyl ktos jakas wielka roznice w szybkosci dzialania jakiejs zasobozernej aplikacji (np mplayer albo blender) pomiedzy wersja kompilowana na wlasnym kompie pod wlasna arch, a wersja standardowa instalowana z paczki? Ja tak, i to kolosalna...

 

Dzieki za pomoc

Pozdrawiam

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ę...