Visual Studiosta linuxiin c++

Tarkoitus olisi saada harrastelijatuotoksia myös linux-yhteensopivaksi Visual Studio 2017 Community ohjelmasta. Grafiikan piirtoon on SFML-kirjasto. Onko toiveita saada toimimaan pienellä vaivalla vai pitääkö kääntää linuxissa?
19176
Äänestä

Muut lukivat myös

Vastaukset 19

Vanhimmat
  • Kiitos vastauksesta. Joo tuo SFML toimii linuxissa mutta esitin kysymyksen huonosti. Eli miten hankalaa on saada VS c koodi toimimaan linuxissa? Ehkä Wine olisi helpoin? Täytyy testailla.

    Äänestä


  • harrastelija1 kirjoitti:

    Kiitos vastauksesta. Joo tuo SFML toimii linuxissa mutta esitin kysymyksen huonosti. Eli miten hankalaa on saada VS c koodi toimimaan linuxissa? Ehkä Wine olisi helpoin? Täytyy testailla.

    Kielihän on sama että ei siinä mitään eroa ole ja se on se ja sama millä editorilla kirjoittaa.

    Eksoottinen buildijärjestelmä tai joku rajapinta/framework riippuvuus siellä vaikuttaa. Jos riippuvuudet rajoittaa SFML:n niin ja buildaa vaikka CMakella niin ei siinä kääntämisessä mitään esteitä pitäisi olla.

    Tietysti kun kyse on natiivikoodista niin helpointa kääntää siellä missä halutaan toimivan. C ohjelmoijille suosittelen kyllä vahvasti SDL:ää ja kääntämistä Emscriptenillä niin saa käännettyä multimedioita niin, että sama käännetty binääri toimii joka puolella.

    Äänestä

  • m-kar kirjoitti:

    Kielihän on sama että ei siinä mitään eroa ole ja se on se ja sama millä editorilla kirjoittaa.

    Eksoottinen buildijärjestelmä tai joku rajapinta/framework riippuvuus siellä vaikuttaa. Jos riippuvuudet rajoittaa SFML:n niin ja buildaa vaikka CMakella niin ei siinä kääntämisessä mitään esteitä pitäisi olla.

    Tietysti kun kyse on natiivikoodista niin helpointa kääntää siellä missä halutaan toimivan. C ohjelmoijille suosittelen kyllä vahvasti SDL:ää ja kääntämistä Emscriptenillä niin saa käännettyä multimedioita niin, että sama käännetty binääri toimii joka puolella.

    Mitenkäs muuten tuo Qt? Eikös se kääntyisi samasta koodista mille vaan?
    Itse olen ihan harrastajakoodaaja vaan mutta tuolla teen niin sitten sama ohjelma toimii tismalleen samannäköisenä Raspberryssä kun sen siinä vaan kääntää.
    Qt on aloittelijalle niin pirun helppo ympäristö, että sillä saa samantien toimivaa aikaiseksi.
    Mikäänhän ei tietenkään takaa ettäkö tuotos olisi hyvän ohjelmointitavan mukainen..

    Äänestä

  • dfggdsgsg kirjoitti:

    Mitenkäs muuten tuo Qt? Eikös se kääntyisi samasta koodista mille vaan?
    Itse olen ihan harrastajakoodaaja vaan mutta tuolla teen niin sitten sama ohjelma toimii tismalleen samannäköisenä Raspberryssä kun sen siinä vaan kääntää.
    Qt on aloittelijalle niin pirun helppo ympäristö, että sillä saa samantien toimivaa aikaiseksi.
    Mikäänhän ei tietenkään takaa ettäkö tuotos olisi hyvän ohjelmointitavan mukainen..

    Kuvitteletko että M-Kar jotain ymmärtää asiasta, kun sille vastailet

    Äänestä

  • ei-jatkoon kirjoitti:

    Kuvitteletko että M-Kar jotain ymmärtää asiasta, kun sille vastailet

    kyllä se oman kokemukseni perusteella noista eniten täällä tietää.

    Äänestä

  • dfggdsgsg kirjoitti:

    Mitenkäs muuten tuo Qt? Eikös se kääntyisi samasta koodista mille vaan?
    Itse olen ihan harrastajakoodaaja vaan mutta tuolla teen niin sitten sama ohjelma toimii tismalleen samannäköisenä Raspberryssä kun sen siinä vaan kääntää.
    Qt on aloittelijalle niin pirun helppo ympäristö, että sillä saa samantien toimivaa aikaiseksi.
    Mikäänhän ei tietenkään takaa ettäkö tuotos olisi hyvän ohjelmointitavan mukainen..

    Se kääntyy aika moneen paikkaan joo. Tuo SDL mahdollistaisi sen, että toimii uudelleenkääntämättä joka puolella kun kääntää .wasm muotoon ja sitä sitten ajaa selaimet, ja saa myös käännettyä natiivia. Temppu onnistuu Emscriptenillä.

    Raspberry Pi:ssä nyt varmaan haluaa vähän viritellä koodia että siihen sitten kääntäisi vaikka natiivin mutta se ei tarvitsisi koodiin muutoksia. SDL:n saa käännettyä natiiviksi ja selaimen ajettavaksi: https://www.youtube.com/watch?v=eh-yy7f1bvQ

    Qt on kiva mutta se ei kuitenkaan ole ideaalinen siirrettäviin grafiikkaohjelmiin.

    Äänestä

Hyvinhän se onnistui. Kääntyi suoraan Code Blocksilla kunhan sai nuo SFML kirjastot liitettyä siihen. Yksi sähläys oli kun en tajunnut että linuxissa (Ubuntussa)tiedostot on "case-sensitive" esim .PNG ja .png päätteet viittaavat eri tiedostoon.

Äänestä
  • >>"case-sensitive>>

    juup, tuo tulee usein vastaan kun arduinon kirjastoja käyttää ja ne on monet windows-miesten koodaamia. itse kirjasto toimii ihan ok, kun käy säätämässä nimet yhteneviksi koodin kanssa.

    Äänestä

  • Huomasin että lasten roboteissa missä käytetään alustana arduinon juttuja, niin: huomattavasti muistuttaa jotain Visual BASIC -kieltä se niiden koodi niissä roboteissa.

    Kokeilimme sellaista erästä että miten se seuraa se robotti esimerkiksi lattiaan piirrettyä viivaa pohjassa olevalla anturillaan, yrittää seurata, mutta kun tuollaisissa voi olla niitä antureita millä "näkevät" mitä näkevätkin ja osaavat "kääntyä", niin iso labyrintti oikein teipeistä lattiaan ja kokeilee pääseekö se robotti sieltä läpi ja missä ajassa?

    Hauskoja robotteja on jo lapsillakin.

    Äänestä

Oikein ikävimpiä virheilmoituksia on sitten kun grafiikkakiihdyttien ja sun muiden kanssa koodaat jotain Direct3D-ajureita sun muita, että DMA-muistisiirron virhe: jossain fyysisessä muistissa joku tilattu DMA (Direct Memory Access) -ajoivat päällekäin muistisiirroissa jossain :XD

Ohjelmointiympäristö ilmoittaa että: DMA Buffer Overrun ERROR!
- Olet tilannut seuraavalta vapaalta DMA-kanavalta muistisiirtoja ja jossain on sattunut virhe :D

Äänestä
  • Sitten vielä kun olet tilannut kiihdyttikorttien kanssa jotain RISC-prosessorien koodeja DMA:n kanssa että siirretään DMA:n avulla niitä suoritettavaksi keskusmuistin fyysisiin osoitteisiin, voi vahingossa jäädä joku DMA:n siirto päälle jos et katkaise sitä, mitä tahansa voit tehdä muuta, ja silti on joku DMA:lta tilattu muistisiirto joka on silti huomaamattomana päällä koko ajan :D

    Vähän ehkä niin yksityiskohtaisia juttuja, hardware-tason c-juttuja.... no vielä sanon että: DMA-1 on numeroltaan sellainen, että se ohjaa sitten toiselle vapaalle DMA-kanavalle sen muistisiirron fyysisistä osoitteista toisiin sitten, jos on prioriteetti sillä siirrolla 1, DMA 0 on tietystikin keskusmuistin päivityksessä....

    Äänestä

  • tehokastakoodia kirjoitti:

    Sitten vielä kun olet tilannut kiihdyttikorttien kanssa jotain RISC-prosessorien koodeja DMA:n kanssa että siirretään DMA:n avulla niitä suoritettavaksi keskusmuistin fyysisiin osoitteisiin, voi vahingossa jäädä joku DMA:n siirto päälle jos et katkaise sitä, mitä tahansa voit tehdä muuta, ja silti on joku DMA:lta tilattu muistisiirto joka on silti huomaamattomana päällä koko ajan :D

    Vähän ehkä niin yksityiskohtaisia juttuja, hardware-tason c-juttuja.... no vielä sanon että: DMA-1 on numeroltaan sellainen, että se ohjaa sitten toiselle vapaalle DMA-kanavalle sen muistisiirron fyysisistä osoitteista toisiin sitten, jos on prioriteetti sillä siirrolla 1, DMA 0 on tietystikin keskusmuistin päivityksessä....

    Noi laitteistonläheiset jutut kannattaa eristää lähes aina, että ohjelmointi onnistuu mahdollisimman korkealla tasolla ilman typeriä bugeja.

    Parhaimmillaan tarkoittaa sitä, että ei esimerkiksi tarvitse tehdä mitään kopiointia muistissa kun korkean tason kieli tietää jonkun muistialueen muuttumattomaksi ja voikin automaattisesti käyttää viittauksia.

    Jos sitten on suorituskyky todella kriittistä niin on kyllä yksi mahtiratkaisu: Tekee ensiksi korkean tason kielellä toimimaan, ja sitten hinkkaa saman uusiksi C:llä ja verifioi toteutuksen korkeantason versiota vasten.

    Tuolla tavalla saa tehtyä bugittomia ohjelmia.

    Äänestä

  • Olisi kyllä mukava kun olisi näitä RISC-kiihdyttien ja ajureiden ohjelmoijia Linux-puolellakin, kun testailin Ubuntun uusinta, näytti aivan fiksulle tuo, mutta kaikki ajurit puuttuvat, "kengät on mutta nauhat puuttuvat" -tyyliiin.

    Microsoftillahan on erittäinkin hyvä netistäkin saatava apu ohjelmointiin, itseasiassa sitten jotkut todella rankkoja hardware-koodia tarvitsevat jutut, ja tehokkaat vaativat aina tutustumista kyseisen kiihdytinkortin omaan sisäiseen koodiin jne..

    Oikeasti ihastuinkin vähän Ubuntun ulkonäköön, mutta sitten tökkäsi siihen se tutustuminen, kun ei saa edes nettiyhteyttä jos ei ole nettiyhteyttä, vähän kuin myyt sitten BluRay-levyn CDROM-aseman omistajalle...

    Äänestä

  • näyttihienolletuo kirjoitti:

    Olisi kyllä mukava kun olisi näitä RISC-kiihdyttien ja ajureiden ohjelmoijia Linux-puolellakin, kun testailin Ubuntun uusinta, näytti aivan fiksulle tuo, mutta kaikki ajurit puuttuvat, "kengät on mutta nauhat puuttuvat" -tyyliiin.

    Microsoftillahan on erittäinkin hyvä netistäkin saatava apu ohjelmointiin, itseasiassa sitten jotkut todella rankkoja hardware-koodia tarvitsevat jutut, ja tehokkaat vaativat aina tutustumista kyseisen kiihdytinkortin omaan sisäiseen koodiin jne..

    Oikeasti ihastuinkin vähän Ubuntun ulkonäköön, mutta sitten tökkäsi siihen se tutustuminen, kun ei saa edes nettiyhteyttä jos ei ole nettiyhteyttä, vähän kuin myyt sitten BluRay-levyn CDROM-aseman omistajalle...

    Raudastahan se riippuu... Ei kaikki softa ole kaikelle.

    Itse ottaisin tuohon Raspberry pin ja Rasbianin jos haluaisin rautaa hinkata.

    Äänestä

Tuollainen juttu on todellakin niin että: ensin kysyt väylien ajurilta tietoja, sitten se palauttaa emolevyn tietoja mitä laitteita on kytketty ja minkälaisia ominaisuuksia niillä on.... tulee pitkä lista sitten mitä voit määrätä ohjelmoijana mitä haluaisit niiden tekevän...

Emolevyn kaikki liitännät tulee väylien ajurit ja DMA-kanavat sun muut listassa tulee silloin, niistä vain valikoit sitten mitä haluat millekin tehtäväksi laittaa...

DMA:n muistisiirroissa voi sattua jotain hassuja vahinkoja todellakin jos tilaat joitain erillisiä nopeita muistisiirtoja päällekäin suoraan erillisiltä kanavilta kiihdytinpiireille muistisiirtoja prosesorin ohi.. :D

Äänestä

Huvittavaa kyllä itsellekin tuollainen, kun laitat pyynnön emolevyn ajurille että: mitä laitteita on kiinnitetty tälläkin hetkellä tietokoneeseen., emolevylle hardia laitat, tulee litaniaa että tällaisia grafiikkakiihdyttimiä ja kortteja on tällä hetkellä kytkettynä koneeseen _D

Äänestä

Tuollaisissa jutuissa noiden DMA-muistisiirtojen kanssa on sitten itse tarkkailtava niitä jotta muistiosoitteet eivät mene päällekäin: real-time, physical memory addresses :D

Ikävä jos DMA-siirrot ajavat vahingossa päällekäin vaikka prosessorin cache-muistissakin, vahingossa :D

Äänestä

Ketjusta on poistettu 1 sääntöjenvastainen viesti.

Kommentoi aloitusta


harrastelija1 kirjoitti:

Tarkoitus olisi saada harrastelijatuotoksia myös linux-yhteensopivaksi Visual Studio 2017 Community ohjelmasta. Grafiikan piirtoon on SFML-kirjasto. Onko toiveita saada toimimaan pienellä vaivalla vai pitääkö kääntää linuxissa?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu