64-bites C/C++ fordító Windowson

Fórumok

Sziasztok,

10+ éve nem láttam Windowst, ezért most nem ismerem ki magam a témában. Kérdésem, milyen eszközökkel fordítunk manapság C/C++ programot 64 bites Windows 2012 szerveren? Natív 64 bites programot akarok fordítani parancssorból.

Amit eddig csináltam: Telepítettem a Windows SDK-t (version 8.59.25584), de ebben nincs cl.exe, vagy talán most máshogy hívják a fordítót?

Hozzászólások

ingyen szeretnél C fordítót? hová gondolsz? :)
az SDK AFAIK nem tartalmaz C fordítót, ehhez kell egy valamilyen visual studio

Windows 2000-hez jó volt a VCToolkit és a Platform SDK. Ingyen letölthetők, de úgy tudom, hogy az ingyenesség csak a cli fordító eszközöre vonatkozott. Az előbbiek még a Windows 2003-hoz is jók voltak, mostanra azonban feltehetően változtak a dolgok. Azért egy ilyen névvel, hogy Visual Studio nem sokra megyek.

Továbbra is a kérdés: Hol, mely csomagban van a Windows 2012-höz passzoló 64 bites (de minimum 64 bites programot készítő) cl.exe?

--
ulysses.co.hu

Sajnos a 2010-es Express-be sem rakták bele a 64-bites fordítást, de van egy workaround, ami már a korábbi kiadásokkal is ment: fel kell tenni a Windows SDK-t (ez is free).
http://msdn.microsoft.com/en-us/library/9yb4317s.aspx
http://msdn.microsoft.com/en-us/library/h2k70f3s.aspx

Szia!

A fordító nem a cl, hanem az msbuild, a cl pedig azt hiszem a linker, de persze kell a fordításhoz az is.

Az msbuild elvileg a .Net frameworkben van, a cl viszont tényleg a Windows SDK-ban van benne, fel kell tenni az SDK-nak a C++ compiler részét.

Annyi, hogy fordítás előtt el kell indítani a valamilyen bat fájlt, ami beállítja a szükséges környezeti változókat a buildeléshez. Ennek kell megadni, hogy 64 bitest akarsz fordítani valamilyen kapcsolóval (talán /x64, de meg tudod nézni).

Amúgy most nagyon képben vagyok a kérdésben, épp most csináltam hasonlót, szóval kérdezz nyugodtan.

Mint ahogy a nevéből is látszik, igen, az fordító, azzal lehet a VS projekteket lefordítani VS nélkül. De abban igazad van, hogy a cl a c fordító, az msbuild azt indítja el a c projektek fordításához.

Ja igen, nekem VS studio projektet kellett fordítani VS nélkül...

Milyen ha nem vagy képben?

MSBuild: build system (analógia: make, nmake, stb.)
cl: C/C++ fordító (analógia: gcc, icc, clang)
link: linker (analógia: ld)
Környezeti változók: vcvars32.bat vagy vcvars64.bat

Az utóbbi három része a Visual Studionak, a Visual Studio Expressnek, a WDK-nak (bár ez utóbbit nem ajánlom). Az SDK-ban szerintem nincs benne, de ez nem biztos.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Rakd fel a Visual Studio Express-t.

CMake-et használj meta buildernek, az tud generálni makefile-okat, amik az msvc-t, a Ms C/C++ fordítóját használják. így nem fosztod magad az nmake begépelésének az élményétől.

Nekem ez így működik, pofon egyszerű, még Qt-t is tudja.

Tedd fel a VC Express-t, abban lesz.

Egyre figyelj oda, hogy van _kulon_ olyan konzol, ahol 64 bites forditod van, illetve ezt a telepitoben is ki kell valasztni a megfelelo opciokat hozza (az Itaniumot meg tiltsd le).

Illetve meg egy jotanacs: VC 2008 -nal frissebbet ne akarj. A legtobb opensource projekt ezzel van csak tesztelve, es ezzel mukodik faszan. Az ujabbak felejtosek.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

A máshol felvetett dolgokra is itt válaszolok.

Visual Studio Express for Windows 8: 30 napos próba.

Felment a 64 bites Windows 2012 szerverre.

A parancssoros fordítót cl.exe-nek hívják.

Sajnos nem úgy van, ahogy gondoltam, azaz jelenleg nincs ingyenes 64 bites MSC compiler. A VC Toolkit 2003 csomag nyomai megvannak még az interneten, nekem is van belőle egy példány, de nincs neki modernebb folytatása. A régi VCToolkit2003 most is használható, de csak 32 bites programokat lehet vele készíteni.

A 64 bites compiler ahhoz kell, hogy a CCC-t portoljam 64 bitre Windowson. (Megj: Linuxon, BSD-n 2004 óta megy 64 biten is.) Részemről ez egy hobbi project. Az esetleges felhasználóknak is szükségük van ugyanarra a C compilerre, úgyhogy egy fizetős compiler nem opció. Marad tehát a MinGW.

--
ulysses.co.hu

"A régi VCToolkit2003 most is használható, de csak 32 bites programokat lehet vele készíteni."

Tévedés. A 2003-as cuccokban már van 64 bit támogatás. A Toolkit-ben a compilerek a Windows Server 2003 SDK-ban a könyvtárak. 10 éve használom, de csak most vettem észre. Először ezeket próbálom ki.

Szerk.

Meg is van a nagyja. Az +1000 cpp forráshoz 5 helyen kellett hozzányúlni: ahol korábban implicit cast volt, most be kellett írni a size_t-ről double-ra konverziót.

A build rendszerhez minimálisan kellett hozzányúlni: ki kellett hagyni két deprecated fordítási opciót, viszont hozzáadni a bufferoverflowu lib linkelését.

Tisztán csak a PATH, INCLUDE, LIB változók beállításán múlik a 32 vs. 64 bit.

Most van egy rakás 64 bites program, amik nincsenek ugyan agyontesztelve, de sok baj már nem lehet vele, ha le tudták magukat fordítani. Meg ugye ez egy veremgép, amiben mindenhol ugyanazok a primitívek futnak. Ami még kell: 64 bites ssl, pcreposix, gtk könyvtárak. Ezeket majd MinGW-vel.

Végül a pontos nevek, hogy mikkel dolgoztam:

Visual C++ Toolkit 2003 (öninstalláló exe)
Platform SDK Collection for Windows Server 2003 SP1 (CD ISO)

Ezeket még a saját idejükben begyűjtöttem, ingyenesek, nem időkorlátosak, talán még most is le lehet őket tölteni. Tévesen föltételeztem, hogy ezek a régi eszközök nem támogatják a 64 bitet, egyébként nem hozom létre a topicot.

Ahol mindezt csinálom: egy Ubuntu Natty qemuban futó 64 bites Windows 2012 szerver (180 napos próba).

--
ulysses.co.hu

Ha már úgyis Linux alól szenvedsz, miért nem mingw cross-compile? Igaz kb 6 éve csináltam ilyet gentoo alól, de akkor problémamentes volt, gondolom azóta sem lett nehezebb...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Miféle szenvedés?

Érdemes tudni a MinGW-w64 projektről. A projekt célja 32 és 64 bites Windowsra fordító GCC-k előállítása. A MinGW-w64 compilerek mindenféle platformon futnak: 32 és 64 bites Windowson, Linuxon, Darwinon, Cygwinen, vagyis keresztfordításról van szó. Vastagon használom, de mivel nincs vele probléma, nem erről szólt a topic.

Mire használom a C fordítókat:

A C nekem a CCC-hez kell. A CCC egy Clipper szerű nyelv, ami a Clipper kódot C-re fordítja. A CCC fordításnak ezért mindig része a C fordítás. Unix/Linuxokon mindenhol a GCC-t használom, Windowson a GCC-t és (!) az MSC-t, de az utóbbiból csak a 2003-as régi változatot, az újabbakkal nem volt szerencsém, túlságosan nem is érdekel.

A Clipperből generált kóddal sosincs gond. Kellenek viszont olyan külső könyvtárak, mint az OpenSSL, amiket baromi nehéz Windowson lefordítani. Itt jön képbe a MinGW-w64 keresztfordítási képessége. Ubuntun prímán lefordítja az OpenSSL-t 32 és 64 bites Windowsra is.

--
ulysses.co.hu

"Miféle szenvedés?"
A teljes thread fentebb. :)

Egyébként qemu+windows server 180-napos próba és hasonlók. Ha már úgy is MinGW-t is használsz, és úgyse azért kell az MSVC mert jobb kódot generál, vagy linkelned kell az eredmény mással, akkor tán egyszerűbb hagyni a francba.

Just my 2 cents.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

A CCC karbantartását csinálom. Nagyon könnyű dolgozni qemuban futó Windows-zal, FreeBSD-vel, NetBSD-vel. Leegyszerűsödött az élet, mióta ilyen frankón működik a qemu. Nem kell a ritkán használt rendszerekre külön gépet fenntartani, vagy folyton installálni, diszket ki-be dugdosni meg effélék. Mindig kéznél van és kész.

Valóban, mindig felvetődik, hogy az MSC-t el kéne hagyni. Nem is annyira az MSC-vel van gond, hanem hogy nehéz megszerezni a vele kompatibilis opensslt, regexpet és hasonlókat. De egyelőre még megy.

--
ulysses.co.hu

= "KVM-et hasznalok"

Nem egyesitettek, hanem a QEmu-nak az egyik alprojektje a KVM, ami erosen epit a processzor alapu virtualizaciora (ugye a kqemuhoz meg erre nem volt szukseg). Viszont ezt leszamitva, minden szempontbol QEmu, meg a parancssori felulet is.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

A C nekem a CCC-hez kell. A CCC egy Clipper szerű nyelv, ami a Clipper kódot C-re fordítja.

Akkor nezd meg a Harbour-t is, az tud mindenfele OS-re forditani (MS-DOS, Windows (32 & 64), Windows CE, Pocket PC, OS/2, Linux, Mac OS X).

Mi a DOS-on futo (Clipper-ben irt) ugyviteli rendszerunket forditottuk le vele (64 bites) Linuxra, lassan ket eve megy elesben, es koszoni, mukodik.