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
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..
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.
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.
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.
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.
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.
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
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.
Eli käännellään kirjastoa. Mitenkäs se tapahtuu:)
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/
Ää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.
Kiitos kaille auttaneille vaikka en saanut tota käännettyä. Taidan yrittää saada kurssin läpi muilla konsteilla.
Harvinaisen erikoinen harjoitustehtävä... Mutmut, tuolla paketissahan on ihan suora ohje miten se käännetään Windowsissa. Kokeilepa lukasta se läpi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.