Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C-koodin kääntäminen

Sivun loppuun

Tinttinen [12.04.2010 23:17:12]

#

Hei kaikki,

Löytyisköhän täältä yksinkertaiseen ja pieneen asiaan neuvoa!? Minun pitäisi tehdä yksinkertainen open antama lisähomma ja kääntää valmiista C-koodista exe-tiedosto.

Minulle ei ole mitään muistiinpanoja tallella enkä ja olen pari päivää googlettanut ja yrittänyt ja nyt alkaa tulla jo itku silmään. Sen verran sain aikaan että asensin Microsoftin Visual Basic 2008 Express Edition ja että jotenkin pitäisi kääntää se make komennolla tai jotain.

Täältä löytyy se koodi mikä pitäisi kääntää:
http://www.cypherspace.org/adam/stealth/source/

Kaikille pienenkin vihjeen antajille ISO kiitos!

TiinaS

Grez [13.04.2010 00:02:26]

#

Visual Basicilla ei voi kääntää C-kielistä koodia. Se on nimensä mukaisesti Basic, joka on eri ohjelmointikieli kuin C.

Jos haluat välttämättä microsoftin työkaluja käyttää, niin Microsoft Visual C++ olisi todennäköisesti oikeampi työkalu. MS:n työkaluissa ei kuitenkaan yleensä käytetä makefilejä, vaan erilaisia projektitiedostoja.

Makefilet on tyypillisimmillään un*x ympäristöissä, joskin voihan niitä käyttää missä vaan. Veikkaan että jos purat paketin Linux-ympäristössä ja sanot "make", niin homma hoituu ilman sen kummempia kommervenkkejä. Toki gcc:n ja oheistyökalut voi asentaa Windowsiinkin, mutta itse en jaksaisi..

jmp [13.04.2010 02:22:43]

#

C-koodin kääntämiseen tarvitset C-kääntäjän. Tällainen kääntäjä on esimerkiksi GCC. Windowsille on olemassa MinGW-niminen paketti, joka sisältää mm. kyseisen kääntäjän. Sen eräs versio löytyy täältä: http://www.tdragon.net/recentgcc/ Asennus on yksinkertaista. Pakettiin kuuluu myös mainitsemasi make-ohjelma, jonka käytön saat opetella itse.

Vinkki: Saatat itse joutua lisäämään aiemmin mainitun bin-hakemiston PATH-ympäristömuuttujaan. Tähän löytynee apuja muualta netistä.

Sama voi onnistua helpommin Visual Studiolla (tai jollakin muulla), mutta siitä en tiedä mitään.

Metabolix [13.04.2010 08:34:39]

#

Code::Blocks on helppokäyttöinen C- ja C++-kehitysympäristö. (Valitse asennuspaketti, johon sisältyy myös yllä mainittu MinGW.) Toinen vaihtoehto on Microsoftin Visual C++ Express Edition.

Macro [13.04.2010 09:14:16]

#

Asenna Metabolixin ehdottama Code::Blocks. Microsoftin Exxpress editionit eivät minulla tunnu millään toimivan, ja niitten kanssa palaa hermo.

Kun sanoit ladanneesti Visual Basic Express Editionin, niin voin vain kertoa ettei sillä ole mitään tekemistä asian kanssa.

Tinttinen [13.04.2010 13:17:10]

#

Hei ja kiitos kaikille vastauksista. Asensin juuri Metabolixin Code::Block ja olen tekemässä uutta projektia. Nyt wizard kysyy mikä kääntäjän valitsen. Otanko tiny C compilerin?

Ilmeisesti tämä ei ole oikea kääntäjä? Sain lisättyä projektiin source tiedostot mutta kun yritän kääntää koko juttua saan vastauksen:uses an invalid compiler.

Metabolix [13.04.2010 14:56:32]

#

Asensitko varmasti version, jossa on mukana MinGW (GCC)? Pitäisi olla myös aivan ilmeistä, että jos kääntäjää kysytään, juuri tämä kuuluu valita.

Tinttinen [13.04.2010 16:25:35]

#

Asensin joo. Valikossa on sellainen GNU GCC. Ilmeisesti se on oikea? Nyt sain sen kääntämäänkin mutta tulee 30 virhettä:

Linking console executable: bin\Debug\testi4.exe
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_udiv':
G:/stealth-2.01b/mpilib.c:392: undefined reference to `_P_ROTL'
G:/stealth-2.01b/mpilib.c:395: undefined reference to `_P_SUBB'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_recip':
G:/stealth-2.01b/mpilib.c:429: undefined reference to `_P_ROTL'
G:/stealth-2.01b/mpilib.c:431: undefined reference to `_P_SUBB'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_mod':
G:/stealth-2.01b/mpilib.c:517: undefined reference to `_P_ROTL'
G:/stealth-2.01b/mpilib.c:519: undefined reference to `_P_SUBB'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_mult':
G:/stealth-2.01b/mpilib.c:662: undefined reference to `_P_ROTL'
G:/stealth-2.01b/mpilib.c:664: undefined reference to `_P_ADDC'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_dmul':
G:/stealth-2.01b/mpilib.c:1230: undefined reference to `_P_SMULA'
obj\Debug\stealth-2.01b\mpilib.o: In function `stage_smith_modulus':
G:/stealth-2.01b/mpilib.c:1588: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1616: undefined reference to `_p_setrecip'
G:/stealth-2.01b/mpilib.c:1617: undefined reference to `_P_SETP'
obj\Debug\stealth-2.01b\mpilib.o: In function `smith_modmult':
G:/stealth-2.01b/mpilib.c:1646: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1666: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1687: undefined reference to `_p_quo_digit'
G:/stealth-2.01b/mpilib.c:1689: undefined reference to `_P_SMULA'
G:/stealth-2.01b/mpilib.c:1698: undefined reference to `_P_SUBB'
G:/stealth-2.01b/mpilib.c:1708: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1714: undefined reference to `_P_SETP'
obj\Debug\stealth-2.01b\mpilib.o: In function `smith_burn':
G:/stealth-2.01b/mpilib.c:1736: undefined reference to `_p_setrecip'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_modexp':
G:/stealth-2.01b/mpilib.c:1798: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1806: undefined reference to `_P_SETP'
G:/stealth-2.01b/mpilib.c:1855: undefined reference to `_P_SETP'
obj\Debug\stealth-2.01b\mpilib.o: In function `mp_modexp_crt':
G:/stealth-2.01b/mpilib.c:1947: undefined reference to `_P_SUBB'
G:/stealth-2.01b/mpilib.c:1948: undefined reference to `_P_ADDC'
G:/stealth-2.01b/mpilib.c:1954: undefined reference to `_P_ADDC'
obj\Debug\stealth-2.01b\stealth.o: In function `strip_headers':
G:/stealth-2.01b/stealth.c:787: undefined reference to `_P_ROTL'
G:/stealth-2.01b/stealth.c:812: undefined reference to `_P_ROTL'
G:/stealth-2.01b/stealth.c:905: undefined reference to `_P_ADDC'
obj\Debug\stealth-2.01b\stealth.o: In function `main':
G:/stealth-2.01b/stealth.c:1513: undefined reference to `_P_SETP'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
30 errors, 0 warnings

Mulla loppuu kohta usko tähän.... Plääh

Teuro [13.04.2010 17:27:51]

#

Käyttämääsi kirjastoa ei ole linkitetty mukaan. Linkkaa linkkerille sopiva kirjastotiedosto. Toivottavasti sellainen toimitettiin tuon tehtävän mukana, koska muuten joutunet kääntämän kirjaston itse.

Tinttinen [13.04.2010 21:49:10]

#

Eli käännellään kirjastoa. Mitenkäs se tapahtuu:)

Jtm [13.04.2010 23:43:38]

#

Metabolix kirjoitti:

Code::Blocks on helppokäyttöinen C- ja C++-kehitysympäristö. (Valitse asennuspaketti, johon sisältyy myös yllä mainittu MinGW.) Toinen vaihtoehto on Microsoftin Visual C++ Express Edition.

Kolmas vaihtoehto on helppokäyttöinen Codelite, C- ja C++-kehitysympäristö, joka on avointa lähdekoodia ja jolla on hyvin aktiivinen kehitystiimi. Sen mukana tulee tuoreimpia MinGW versioita toisin kuin Code Blocks:lla, jonka kehitys hiipui käytännössä jo kaksi vuotta sitten. Codeliten voi ladata osoitteesta: http://codelite.org/

Deffi [14.04.2010 10:36:40]

#

Ääh kamalan vaikeaa. Ohjelma on tarkoitettu käännettäväksi unixin työkaluilla ja mielestäni asioita vain mutkistetaan käyttämällä jotain IDEjä. Jos asensit Code::Blocksin, niin sinulta pitäisi löytyä tarvittavat työkalut ohjelman kääntämiseen hakemistosta "C:\Program Files\CodeBlocks\MinGW\bin", joka tarvitsee lisätä PATH-ympäristömuuttujaan. Vistassa se onnistuu ainakin seuraavasti: ohjauspaneeli -> järjestelmä -> järjestelmän lisäasetukset -> ympäristömuuttujat, jonka jälkeen lisäät kyseisen polun PATH-muuttujan loppuun (muista erottaa edellisestä polusta ;-merkillä)

Nyt Windows löytää MinGW:n tiedostot ja niitä voi kutsua suoraan komentoriviltä. Avaat komentorivin ja cd-komennolla siirryt hakemistoon, johon olet purkanut kooditiedostot. Sitten ajetaan se make-komento, joka on MinGW:n kanssa mingw32-make. Ohjelma ei kuitenkaan käänny ihan suoraan, ja saat selvittää ihan itse miksi ei. Joku koulutehtävähän tämä oli.

Tinttinen [15.04.2010 23:48:08]

#

Kiitos kaille auttaneille vaikka en saanut tota käännettyä. Taidan yrittää saada kurssin läpi muilla konsteilla.

Torgo [04.05.2010 11:49:47]

#

Harvinaisen erikoinen harjoitustehtävä... Mutmut, tuolla paketissahan on ihan suora ohje miten se käännetään Windowsissa. Kokeilepa lukasta se läpi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta