Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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
-
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...
-
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.
-
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
-
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.
-
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.
-
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
-
#define STRICT
-
... 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á)