Přenositelnost programu v C++

pichlik

Přenositelnost programu v C++
« kdy: 17. 10. 2010, 22:09:13 »
Ahoj
Vytvarim projek v c++ pod windows v IDE CodeBlocker,protoze bych si rad vyzkousel prenositelnost kodu do linuxu nainstaloval jsem si virtualni pocitac s mandrivou a do ni stahl to same IDE.  Bohuzel pokud se projek preneseny z oken pokusim prelozit dostanu hlaseni

/home/pichlik/Dokumenty/test menu/sdl_15_a.cpp|75|warning: large integer implicitly truncated to unsigned type|
ld||cannot find -lmingw32|
||=== Build finished: 1 errors, 1 warnings ===|

Priom kdyz dam pod linuxem zalozit novy projekt a do neho nakopiruju puvodni zdrojovy kod tak to normalne bezi :( rad bych to vsak vyresil nejak konforneji.

diky
« Poslední změna: 17. 10. 2010, 23:48:58 od Petr Krčmář »


v

Re: Prenositelnost programu
« Odpověď #1 kdy: 17. 10. 2010, 22:31:21 »
Podle "cannot find -lmingw32" (googli: "mingw") usuzuju, že se na Linuxu pokoušíš projekt přeložit s nastavením pro windows, snad by mělo jít použít dva projektové soubory - jeden pro Linux a jeden pro windows, ačkoli "CodeBlocker" neznám...

pichlik

Re: Prenositelnost programu
« Odpověď #2 kdy: 17. 10. 2010, 22:39:40 »
použít dva projektové soubory - jeden pro Linux a jeden pro windows, ačkoli "CodeBlocker" neznám...
Presne takhle to resim doposud, rad bych vsak zjistil jak to udelat abych mit dva projektove soubory nemusel. Respektive kde je zakopanej pes.

v

Re: Prenositelnost programu
« Odpověď #3 kdy: 17. 10. 2010, 22:44:07 »
pes je zakopaný v <viz má prvá odpověď> a podle tvého úvodního příspěvku nepoužíváš _pouze_ dva projektové soubory, ale dvě kopie celé adresářové struktury projektu

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: Prenositelnost programu
« Odpověď #4 kdy: 17. 10. 2010, 23:30:06 »
No, mozna by stacilo se podivat do seznamu knihoven, ktere budou k projektu (v Linuxu) prikompilovany a odebrat ji odtamtud. Pravym mysitkem kliknete na Vas projekt->volba properties->tlacitko "Project build options"->zalozka "Linker settings". Na panelu "Link Libraries" njadete vsechny knihovny mingw a tlacitkem "delete" je postupne odstrante.... Pokud ji nenajdete zde, urcite pujde je najit v projektovem souboru a vymazat rucne primo tam.

Pokud se nepletu mingw32 je runtime knihovna kterou je potreba prilinkovat do programu kompilovanych MinGW. takze ji tam CodeBlock dal asi automaticky.
     
« Poslední změna: 17. 10. 2010, 23:35:39 od D.A. Tiger »


Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re: Přenositelnost programu v C++
« Odpověď #5 kdy: 18. 10. 2010, 00:00:43 »
Code blocker neznám, takže poradím jen "abstraktně". Jsou dvě možnosti. Buď musíš zajistit, aby program používal ve windows i v linuxu stejný knihovny. Tzn. projít projektovej soubor a vyházet vše, co nepotřebuješ. Koukám tiger radí jak.

Pokud i po vyházení zjistíš, že potřebuješ na winech např. mingw knihovnu, která na linuxu není či naopak, tak buďto musíš použít dvě verze projektovejch souborů, nebo podmíněnej překlad.

Jak udělat odmíněnej překlad je vícero způsobů. Pokud to IDE používá makefile, tak man make. Jinak zjistit v dokumentaci k IDE, jestli není nějaká možnost podmíněnýho překladu, poslední možnost jsou direktivy #pragma + C preprocesor. Je však možné, že tvoje kombinace IDE a kompilátoru nepodporuje ani jednu možnost.

pichlik

Re: Prenositelnost programu
« Odpověď #6 kdy: 18. 10. 2010, 04:58:47 »
Pravym mysitkem kliknete na Vas projekt->volba properties->tlacitko "Project build options"->zalozka "Linker settings".   

Mate pravdu takdo to funguje, ja jsem prilinkovane knihovny kontroloval takto. V projektovem stromu jsem vybral projekt a v hlavnim menu kliknul na Build-> options->linker seting. Zde je jakoby dalsi stromek menu->debug menu->release a me nenapadlo podivat se do vrcholu stromu menu ale hledal jsem to prilinkovani v release a debug :) ted je jiz vse jasne.

Vas postup me hodil rovnou na spravne misto dekuji

Kill_Bill

Re: Přenositelnost programu v C++
« Odpověď #7 kdy: 18. 10. 2010, 08:00:13 »
#define STRICT

Re: Prenositelnost programu
« Odpověď #8 kdy: 19. 10. 2010, 08:37:59 »
... Build-> options->linker seting. Zde je jakoby dalsi stromek menu->debug menu->release a me nenapadlo podivat se do vrcholu stromu menu ale hledal jsem to prilinkovani v release a debug :) ted je jiz vse jasne. ...

No já nevím.
Já osobně bych build pro dvě různé platformy nerozlišoval jako Debug a Release.
Využil bych toho, k čemu je make určený a upravil makefile tak, aby linkoval podle prostředí.
Začal bych třeba zde: http://www.gnu.org/software/make/manual/html_node/Conditionals.html#Conditionals .
(Tedy pokud ten Code Blocker make využívá)