![]() ![]() ![]() |
Pregledavanje ovog Threada:
1 Anonimnih Korisnika
![]() ![]() ![]() |
|
|
|
---|
Pošiljatelj | Thread |
---|
|
C++ compile error | #1 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Upravo došao
![]() ![]() Pridružen: 17.06.2005
Od
Poruke: 18
Level : 2 HP : 0 / 49
Grupa:
Registered Users ![]() |
Instalirao sam OpenSuse 11.0 na novom desktop PC ( do sada sam na starom PC-u imao Suse 9.1).
Moj primarni interes je koristenje programa za Monte Carlo numericke simulacije. Taj programski paket se sastoji od default dijela sa Fortranskim source-vima, a nedavno je nadodan modul sa C++ sourcevima ( s namjenom vizualizacije geometrije razmatranog problema). Prije instalacije samog MC programa, na sistem sam instalirao gcc (v. 4.3.1 20080507) te posebno g77 kompajler (paket compat-g77-3.3.5-42.1.i586.rpm), jer ga u verzijama gcc-a v4.x vise nema. Instalacija MC programa prosla je OK, a i testni Fortranski source-vi se kompajliraju i izvode u redu. Nakon toga sam prema uputama htio napraviti ono sto se zove "build the C++ class library", tako da iz danog direktorija zadam naredbu 'make'. Medjutim ovaj postupak se prekida sa slijedecom greskom: ----------------------------------------------------------------------------- darko@linux-shi1:~/mc/egs++> make Creating directory dso Creating directory dso/i686-pc-linux-gnu-g77 g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_input.o egs_input.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_base_geometry.o egs_base_geometry.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_library.o egs_library.cpp egs_library.cpp:103: warning: deprecated conversion from string constant to ‘char*’ egs_library.cpp:104: warning: deprecated conversion from string constant to ‘char*’ g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_transformations.o egs_transformations.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_rndm.o egs_rndm.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_shapes.o egs_shapes.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_geometry_tester.o egs_geometry_tester.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_timer.o egs_timer.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_polygon.o egs_polygon.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_projectors.o egs_projectors.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_alias_table.o egs_alias_table.cpp g++ -I../lib/i686-pc-linux-gnu-g77 -fPIC -DBUILD_DLL -O3 -c -o dso/i686-pc-linux-gnu-g77/egs_object_factory.o egs_object_factory.cpp egs_object_factory.cpp: In constructor ‘EGS_ObjectFactory::EGS_ObjectFactory(const std::string&)’: egs_object_factory.cpp:96: error: ‘getenv’ was not declared in this scope make: *** [dso/i686-pc-linux-gnu-g77/egs_object_factory.o] Greška 1 -------------------------------------------------------------------------------------------------- Posto sam potpuno nov u tom C++ biznisu, moze li mi netko dati savjet sto je razlog ove greske. Ono sto znam je da sam pod Suse 9.1 na starom PC-u izveo 'make' bez pogreske i da je sve radilo OK. Pozdrav Darko |
||||||||||
Postano : 23.08.2008 2:43:43
![]() ![]() |
|
Re: C++ compile error | #2 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Linux Master
![]() ![]() Pridružen: 04.01.2005
Od 33 stupnja i 4 minute sjeverno, i zatim 5 koraka na zapad
Poruke: 2391
Level : 39 HP : 0 / 964
Grupa:
Webmasters Registered Users HULK UrednikNovosti UrednikRecenzija UrednikLinkova ModeratoriForuma UrednikSekcija UrednikBlogova UrednikDogadjanja UrednikDokumenata UrednikKomentara ![]() |
Očito je g++ postao striktniji u tretiranju nekih upozorenja i grešaka. Mislim da imaš par mogućnosti:
- ispraviti grešku u kodu, odnosno definirati "getenv" tako da ga kompajler vidi, i zna što s tim treba napraviti - javiti autorima te MC simulacije problem i tražiti savjet/patch - javiti autorima gcc-a i tražiti savjet - staviti stariju verziju gcc-a (odnosno g++-a) |
||||||||||
Postano : 24.08.2008 16:24:09
![]() ![]() |
|
Re: C++ compile error | #4 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Upravo došao
![]() ![]() Pridružen: 06.01.2009
Od
Poruke: 11
Level : 2 HP : 0 / 28
Grupa:
Registered Users ![]() |
od gcc (g++) kompajlera verzije 4.0 i vece, cstdlib i cstring vise nisu ukljuceni po defaultu....
takodjer, doslo je do promjena u template-ima. tako da ako vam baci gresku kod definicije funkcija i spomene template-e, treba samo dodat ovo: template <> definicija_funkcije(); Takodjer, koliko znam, operatori <? <?= >? >?= su ukinuti.... njihov ekvivalent je da koristite std::min i std::max int var1 = var2 <? var2; je isto kao: int var1 = std::min (var2, var3); int var1 = var2 >? var2; je isto kao: int var1 = std::max (var2, var3); int var1 <?= var2; je isto kao: int var1 = std::min (var1, var2); int var1 >?= var2; je isto kao: int var1 = std::max (var1, var2); To su sve promjene koje sam uspio uociti... Najpametnije vam je, da ako dodje do greske, da downgrade-ate na verziju 3.x |
||||||||||
Postano : 06.01.2009 10:21:09
![]() ![]() |
![]() ![]() ![]() |
|