Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: pichlik 17. 10. 2010, 22:09:13

Název: Přenositelnost programu v C++
Přispěvatel: pichlik 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
Název: Re: Prenositelnost programu
Přispěvatel: v 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...
Název: Re: Prenositelnost programu
Přispěvatel: pichlik 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.
Název: Re: Prenositelnost programu
Přispěvatel: v 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
Název: Re: Prenositelnost programu
Přispěvatel: D.A. Tiger 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.
     
Název: Re: Přenositelnost programu v C++
Přispěvatel: Logik 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.
Název: Re: Prenositelnost programu
Přispěvatel: pichlik 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
Název: Re: Přenositelnost programu v C++
Přispěvatel: Kill_Bill 18. 10. 2010, 08:00:13
#define STRICT
Název: Re: Prenositelnost programu
Přispěvatel: hawran diskuse 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 (http://www.gnu.org/software/make/manual/html_node/Conditionals.html#Conditionals) .
(Tedy pokud ten Code Blocker make využívá)