Egy C++ forraskodot szeretnek lefordiani, Ubuntu 8.10 alatt.
A forrasfajlok konyvtarabol probalom kiadni a make depend utasitast, de a kovetkezo hibauzenetet kapom:
...
types.h:19:22: error: iostream.h: No such file or directory
Valaki tud segiteni, hogyan lehet a problemat kezelni? Elore is koszonom.
(Amugy ezt a fajlt szeretnem leforditani :
http://www.cs.cmu.edu/~robosoccer/simulator/CMUnited99-source.tar.gz )
- 2343 megtekintés
Hozzászólások
http://packages.ubuntu.com/search?searchon=contents&keywords=iostream.h…
Debian - Still in development (sid)
- A hozzászóláshoz be kell jelentkezni
ok, installatam a libroot-dev csomagot, ami tartalmazza a iostream.h fajlt a linked alapjan, de semmi valtozas a make depend ugyanugy hianyolja az iostream.h fajlt....
- A hozzászóláshoz be kell jelentkezni
rossz csomagot tettél fel.
ezek közül válogass:
http://packages.ubuntu.com/search?searchon=contents&keywords=iostream.h…
- A hozzászóláshoz be kell jelentkezni
ok, feltettem a gpu-g++ es libace-dev csomagokat, de valtozatlan az eredmeny... sajnos nincs egyeb otletem....??????????????
- A hozzászóláshoz be kell jelentkezni
azért valamennyire ésszel kell a csomagokat feltenni, nemcsak úgy találomra próbaképpen. Használsz ace frameworkot? Ha nem, akkor nincs szükséged libace-dev -re. A másik csomag pedig egy cross-compillert tesz fel, szerintem azt sem használod.
Ami kell neked, az szerintem a libstdc++6-4.2-dev vagy a libstdc++6-4.1-dev függően a g++ verziódtól. - ezen csomagok tartalmazzák a standard library header fájljait.
Egyébként ha nem fordul valami, akkor bátran belenézhetsz a Makefile -ba, vagy a configure -ba, és kitalálhatod, hogy miért nem találja az adott fájlt. Mert abban is lehet hiba.
- A hozzászóláshoz be kell jelentkezni
ok, tamogatom amit irtal, de konnyu megoldasnak tunik az ember vegketsegbeesetsegeben feltenni egy plusz csomagot (mellesleg amit itt tanacsoltatok) es remelni, hogy majd mukodik...
Feltettem a libstdc++6-4.1-dev es libstdc++6-4.2-dev csomagokat is, de nem ez volt a baja. A make es a configfile ba beleneztem, de nem sok otletet adott... mindenesetre koszonom a segiteni probalast.
- A hozzászóláshoz be kell jelentkezni
ha nem olvasod el figyelmesen amit írtam, akkor tényleg hiába segítek. Írtam, hogy a g++ verziójától függően...
a makefile-ba írd át a g++ -t g++-4.2 -ra, akkor megy.
- A hozzászóláshoz be kell jelentkezni
Te, akárhogy nézem a libroot-dev csomagban nincs iostream.h. Én csak tippelek, hogy e kettő közül kellene neked valamelyik: libstdc++6-4.1-dev, libstdc++6-4.2-dev.
Debian - Still in development (sid)
- A hozzászóláshoz be kell jelentkezni
Nem tudom a megoldást, csak arra emlékszem, hogy kb. 10 éve a standard template library megváltozott. A régebbi változatban "iostream.h"-t kellett inkludálni, az újban "iostream"-et, cin helyett std::cin-t kell írni, stb. Mostanra a régi változat már kiveszett. Peched van, hogy ilyen régi programot kell fordítanod.
--
CCC3
- A hozzászóláshoz be kell jelentkezni
+1
iostream -nak írjuk azt már elég régóta.
--
Keep it simple, stupid.
- A hozzászóláshoz be kell jelentkezni
Ok, az rendben van, hogy azt most minek irjuk, de ha van egy 1999 evi forras fajlom, es azt szeretnem leforditani akkor mit tudok csinalni????
Es mellesleg, ha majd a forrast szerkezteni akarom, akkor milyen fejleszto ezkozt ajalnottok, eddig nem programoztam linux alatt...
- A hozzászóláshoz be kell jelentkezni
Hát ezt nem tudom, biztos vannak erre megoldások. Véleményem szerint, ha jól van megírva a kód (jó eséllyel egy szépen megírt 10 éves C++ kód 2009-ben is valid), magad is írhatsz rá egy scriptet, ami kicseréli ezeket az apró különbségeket.
Nem tudom, mit értesz fejlesztőeszköz alatt, ha egy okos szövegkszerkesztőt, akkor kate, gedit, mcedit vagy akár vi, ízlés szerint. Ha komplett fejlesztőkörnyezetet, akkor áltában Eclipse-t, Code::Blocks-ot szoktak emlegetni.
--
Keep it simple, stupid.
- A hozzászóláshoz be kell jelentkezni
Ez a kod minden bizonnyal szepen van megirva (evek ota futo projekt, csak epp az utolso nyilvanos forras az 99-es ami elerheto...)
Fejleszto eszkoznek nyilvan nem akarok szovegszerkesztot hasznalni...
Az az igazsag, hogy linux alatt nem programoztam eddig(mint fent is irtam, komolyabban csak delphis multam van), az eclipset feltettem csomagbol, de nem tudom, hogy peldaul, ha abban akarok fejleszteni, egyenkent kell megnyitnom a .c fajlokat, nem tudja esetleg az egeszet projektkent kezelni, egyaltalan hogyan kezdjek hozza??
- A hozzászóláshoz be kell jelentkezni
,,egyaltalan hogyan kezdjek hozza??''
Persze, hogy tudja projectként kezeleni. Azt ne várd, hogy elmagyarázza itt bárki, mikor hova kell kattintani, szerezz egy tutorialt, howto-t, helpet, mittoménmit :)
--
Keep it simple, stupid.
- A hozzászóláshoz be kell jelentkezni
Koszonom a tanacsod.
- A hozzászóláshoz be kell jelentkezni
Ez a kod minden bizonnyal szepen van megirva
Nekem az alábbi random részletről nem a "szépen van megírva" kifejezés jut az eszembe, hanem valami egészen más szó, ami "g"-vel kezdődik és "ányolás"-ra végződik.
void my_error(char*);
void my_error(char*,int);
void my_error(char*,int,int);
void my_error(char*,int,int,int);
void my_error(char*,int,int,int,int);
void my_error(char*,int,int,int,int,int);
void my_error(char*,int,int,int,int,int,int);
void my_error(char*,int,int,int,int,int,char,int);
void my_error(char*,float);
void my_error(char*,float,float);
void my_error(char*,float,float,float);
void my_error(char*,float,float,float,float);
void my_error(char*,float,int);
void my_error(char*,char*);
void my_error(char*,char,int,int);
void my_error(char*,char,int,float,float);
- A hozzászóláshoz be kell jelentkezni
Szintaktikailag korrekt, ez le fog fordulni 2050-ben is. Hacsak ki nem veszik a metódus túlterhelést a C++-ból, mert ,,bonyolult'' :)
--
Keep it simple, stupid.
- A hozzászóláshoz be kell jelentkezni
Túlzott optimizmus. A C++ fejlesztők sokat tesznek azért, hogy ne így legyen. Havonta építenek be újabb ellenőrzéseket, amik mindig újabb warningokat jelentenek, amiket aztán később átminősítenek errorra.
--
CCC3
- A hozzászóláshoz be kell jelentkezni
A dologhoz hozzátartozik a megvalósításuk is, az összesnél ez van bekopizva:
char outstring[100];
sprintf(outstring,msg,param1,param2,param_akármennyi);
my_error(outstring);
Sírjak, vagy nevessek?
- A hozzászóláshoz be kell jelentkezni
Ha veszed a faradtsagot belenezni a forrasba, es eleg tudast erzel a hatad mogott minositeni azt, ha esetleg ennyire otthol erzed magad a temaban, nem tudom milyen rendszer alatt neztel bele, de neked lefutott a make-depend? Ha tudsz tanacsot adni, hogy-hogy forditsam, megkoszonnem, mert en sajnos kezdo vagyok ebben a temaban...
- A hozzászóláshoz be kell jelentkezni
A make depend egyszerű téma, kb 4-5 helyen kell a header állományok nevéből kivenni a .h-t, ezt sorra pontosan meg is mondja, ez nem okozhat problémát.
De ez még csak a kezdet, a jéghegy csúcsa, utána jön a többi probléma...
- A hozzászóláshoz be kell jelentkezni
Én is belenéztem a forrásba.
A srácok, aki írták, még kezdő C++ programozók voltak.
Kb. azok a hibák, amiket mindenki elkövet kezdő korában:
Átad egy teljes objektumot a stacken paraméterként, ahelyett, hogy const referenciát írna, hiányoznak a const metódusok, stb... (geometry.h)
- A hozzászóláshoz be kell jelentkezni
Aha, a C++ szerint az iostream és nem iostream.h. Legalábbis amennyiben a standart iostreamről beszélünk.
És std::cin -kell, kivéve, ha beemeljük az std névteret (using namespace std), de ez erősen ellenjavallt.
- A hozzászóláshoz be kell jelentkezni
[off]
Miért ellenjavallt? Sok helyen olvastam hogy nem érdemes az egész std névteret beemelni, de konkrét okot még sehol sem láttam.
[/off]
- A hozzászóláshoz be kell jelentkezni
Úgy általában teljes névterek beemelése ellenjavallt, mégpedig azért, mert semmi sem garantálja, hogy nincs két ugyan olyan nevű függvény különböző névterekben.
Meg a későbbi karbantartást/fejlesztést is megnehezti, hogy nem tudod, ez ay az a függvény honnan van, és ha több névtérben is létezik ugyanolyan nevű függvény/class/akármi, akkor majd nem tudod egyértelműen eldönteni, hogy melyik honnan való.
- A hozzászóláshoz be kell jelentkezni
Értem, köszi. Így utólag belegondolva ez tényleg logikus :)
- A hozzászóláshoz be kell jelentkezni
hi,
nekem hylafax fordításnál volt hasonló gondom. Nem tudom segít-e, de leírom.Lényegében az volt a baj, hogy a configure script-ben át kellett írni a #include -ot, #include "iostream.h"-ra, és még néhány dolgot.
Hátha segít neked is....
- A hozzászóláshoz be kell jelentkezni
Nekem 8.04-en lefordult,
elso korben javasolnam a build-essential nevu csomag feltelepiteset.
Remelem segit.
-== If you want peace prepare for waR ==-
- A hozzászóláshoz be kell jelentkezni
rm *.o peterclient quicksleep megvolt előtte, ugye?
- A hozzászóláshoz be kell jelentkezni
csak a make depend-et neztem :)
mostmar nalam is elhalalozik, de nem az iostream miatt
utils.h:126: error: ISO C++ forbids declaration of ‘operator==’ with no type
utils.h:127: error: ISO C++ forbids declaration of ‘operator==’ with no type
utils.h:128: error: ISO C++ forbids declaration of ‘operator!=’ with no type
... a letezo osszes operator kb
netif.C:146: error: invalid conversion from ‘int*’ to ‘socklen_t*’
-== If you want peace prepare for waR ==-
- A hozzászóláshoz be kell jelentkezni
a kodnak elvileg jonak kell lenie, ez a kod volt 1999-ben a robotfoci szimulacios ligaban a vilagbajnok.... nincs kizarva, hogy a kod csunya, de mukodott.
( http://www.robocup.org/games/99Stockholm/3133.html )
- A hozzászóláshoz be kell jelentkezni
Nem.
Mi az a peterclient, es quicksleep?
- A hozzászóláshoz be kell jelentkezni
Ez a két futtatható állomány jönne létre.
- A hozzászóláshoz be kell jelentkezni
Udv, a build-essential -t mar fent volt.
Ha mas megoldas nincs, keresek egy 8.04 imaget, es ujrainstallalok...
Vagy esetleg egy csomaglistat dpkg -l (privat uzenetbe, vagy ide akar) kerhetnek, es osszehosonlitanam, neked milyen csomagok vannak fent...
- A hozzászóláshoz be kell jelentkezni
Ha meg aktualis, akkor probalj downgradelni/telepiteni gcc-2.98-at ...
Az szerintem vinni fogja ...
k.
- A hozzászóláshoz be kell jelentkezni
Volt egy dapper chroot-om, ott megneztem g++-2.95-el azzal se ment elso nekifutasra, tobb nekifutasra meg nem volt idom :(
-== If you want peace prepare for waR ==-
- A hozzászóláshoz be kell jelentkezni
Ok, koszonom a segitseget. Feladtam.... mas alternativa utan nezek...
- A hozzászóláshoz be kell jelentkezni
Amugy azon az oldalon van egy binaris tar.gz is, miert nem hasznalod azt?
Vagy szeretnel beleirni valamit?
-== If you want peace prepare for waR ==-
- A hozzászóláshoz be kell jelentkezni
Igen bele szeretnek irni egyertelmuen.
- A hozzászóláshoz be kell jelentkezni
sajnálom, hogy feladtad, mert fentebb írtam neked a megoldást: a makefile-ba írd át a "g++" -t "g++-4.2" -re. Ezután már fordul a make depend.
A sima g++ magasabb verzió, amihez nincs dev csomag, ezért kell alacsonyabb verziót használnod... de update-alternatives-el is próbálkozhatsz...
Üdv. Gábor
- A hozzászóláshoz be kell jelentkezni
Jesszusom... legalabb azert egyszer ki lett probalva a
find . -name \*.cpp -o -name \*.h -exec sed -i 's/#include <iostream.h>/#include <iostream>/g' {} \;
parancs? Mert itt mar erosen a birkavesevel foldrenges okozasanak kategoriajaba kezdunk belemaszni, de meg mindig nem latom, hogy miert nem jo a cserelgetos megoldas. Egy ezereves kodba igenis bele kell nyulni sajnos.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
gmatyi - Probaltam nem ment, megprobalom ujra...
hrgy84 - csak egy helyen szerepel a forrasban az #include iostream.h, azt kicsereltem include# -re de ujabb hbauzenetet kaptam...
Egyenlore tenyleg feladtam... elment a kedvem az egesztol... de koszonom a segiteni probalast.
- A hozzászóláshoz be kell jelentkezni
természetesen fel kell hozzá telepíteni a g++-4.2 -t is...
- A hozzászóláshoz be kell jelentkezni