Page 1 of 1

Compiler pour linux sous windows

Posted: Sun Sep 30, 2007 5:28 pm
by 7heFøx
Hey all.

Voilà en une semaine j'ai fait un ptit mod, mon premier enfait, avec mes propres armes, efx etc... et grâce au sdk de jka, la compilation dll marche parfaitement et c'est de loin l'problème, enfait je cherche à compiler en .so, cad pour linux ce qui me permetterait d'avoir un server dédié hebergé grâce à corran histoire de rien payer et d'pouvoir jouer sans lag (le dédié depuis l'pc c'est bien beau mais avec 200 d'ping quand y'a 3joueurs ><).

Donc en résumé, après avoir cherché un converter, un logiciel et essayé vmware pour compiler avec une console linux (qui est complètement foireux ><) j'ai pas trouvé de solution, on m'a donc conseillé de poster ici :o (j'ai pensé à chercher sur l'forum avant d'poster mais y'a pas c'que j'cherche :'o )

Re: Compiler pour linux sous windows

Posted: Sun Sep 30, 2007 5:47 pm
by Gamall
Salut et bienvenue :)

Pour compiler ton mod sous linux, il te faut

-> Un système Linux avec GCC. Le serveur de Corran fera parfaitement l'affaire (ssh powa), et c'est encore mieux que tu compiles sur le système où le mod tournera ; c'est comme ça que j'ai fait avec mes mods :) Tu ne peux PAS compiler de façon satisfaisante un exécutable linux sur un système windows (bien que l'inverse puisse être vraie avec mingw et wine)

-> Un makefile: je te propose celui que j'utilise pour Basejka security fix [légèrement modifié parce que j'ai des fichiers en plus]. Il provient d'un pack trouvé sur internet, j'ai laissé le nom de l'auteur en commentaire:

Code: Select all

# Linux Makefile for Jedi Academy MP SDK
# By Patrick Hemmer
# Version 2
# 
# Created Nov 29, 2003
# The Void - http://www.divoid.net
#
# You may set your own optimizations on the CFLAGS line. If you dont know what optimizations are, then just leave it as is.
# Run 'make' to compile the code, once done, you will have a file called 'jampgamei386.so' in the 'game' directory. Copy this file to the 'base' folder of your server or to your mod folder.
# If for some strange reason, you are running on less than a 586 processor, change the i586 to i386 on the CFLAGS line.

CC = gcc
CFLAGS = -I../cgame -I../ui -I../qcommon -I../server -I../icarus -I../ghoul2 -fPIC -DMISSIONPACK -DQAGAME -DQ3_VM -D_JK2MP -DFINAL_BUILD -DNDEBUG -march=i586 -O3
TARGET = jampgamei386.so

OFILES = AnimalNPC.o FighterNPC.o NPC.o NPC_AI_Atst.o NPC_AI_Default.o NPC_AI_Droid.o NPC_AI_GalakMech.o NPC_AI_Grenadier.o NPC_AI_Howler.o NPC_AI_ImperialProbe.o NPC_AI_Interrogator.o NPC_AI_Jedi.o NPC_AI_Mark1.o NPC_AI_Mark2.o NPC_AI_MineMonster.o NPC_AI_Rancor.o NPC_AI_Remote.o NPC_AI_Seeker.o NPC_AI_Sentry.o NPC_AI_Sniper.o NPC_AI_Stormtrooper.o NPC_AI_Utils.o NPC_AI_Wampa.o NPC_behavior.o NPC_combat.o NPC_goal.o NPC_misc.o NPC_move.o NPC_reactions.o NPC_senses.o NPC_sounds.o NPC_spawn.o NPC_stats.o NPC_utils.o SpeederNPC.o WalkerNPC.o ai_main.o ai_util.o ai_wpnav.o bg_g2_utils.o bg_misc.o bg_panimate.o bg_pmove.o bg_saber.o bg_saberLoad.o bg_saga.o bg_slidemove.o bg_vehicleLoad.o bg_weapons.o g_ICARUScb.o g_active.o g_arenas.o g_bot.o g_client.o g_cmds.o g_combat.o g_exphysics.o g_items.o g_log.o g_main.o g_mem.o g_misc.o g_missile.o g_mover.o g_nav.o g_navnew.o g_object.o g_saga.o g_session.o g_spawn.o g_strap.o g_svcmds.o g_syscalls.o g_target.o g_team.o g_timer.o g_trigger.o g_turret.o g_turret_G2.o g_utils.o g_vehicleTurret.o g_vehicles.o g_weapon.o q_math.o q_shared.o tri_coll_test.o w_force.o w_saber.o

$(TARGET): $(OFILES)
	$(CC) -shared -o $(TARGET) $(OFILES) -lm

.c.o:
	$(CC) $(CFLAGS) -c $*.c -o $*.o

clean:
	rm -f $(OFILES)
	rm -f $(TARGET)
-> Un code compatible avec MVC (win32) et GCC (linux). Si tu as utilisé le SDK de Raven directement, tu es un peu dans la mouise: Raven utilise ICC sous Linux (payant), et toi tu vas utiliser GCC. Le code du SDK ne passera PAS sous GCC. Il faudra le modifier en fonction des insultes du compilateur pour que ça passe. Peut-être qu'essayer avec le port Ming de GCC sous Windows te permettra de déblayer l'essentiel avant d'envoyer le tout sous Linux. Les #ifdef WIN32 seront tes amis en cas de coup dur avec les headers :)

-> De l'aspirine. Très très important :huhu

Voilà, bon courage :)

Re: Compiler pour linux sous windows

Posted: Sun Sep 30, 2007 8:59 pm
by Quinlan
A noter, la team ClanMod vient de poster une version corrigée du SDK. Je ne me suis pas penché dessus même si je l'ai récupéré mais vu que ClanMod a été créer avec ce SDK et vu qu'on a eu des soucis avec la GCC sur le serveur Red Hat d'ida lors de l'installation de ce mod, on peut espérer qu'il ont fait le sale boulot.

=>A confirmer

http://jediknight2.filefront.com/file/J ... ixed;83247

Re: Compiler pour linux sous windows

Posted: Mon Oct 01, 2007 11:42 pm
by 7heFøx
Merci beaucoup, j'vais m'contenter d'voir avec corran si i pourrait compiler avec icc pour commencer , puis si ça va pas j'recommencerais à partir du sdk corrigé, de toute façon si j'mode autre chose j'l'utiliserais maintenant. Réponse rapide et complète ça fait plaisir :).

Re: Compiler pour linux sous windows

Posted: Tue Oct 02, 2007 7:04 am
by Maikoru
Salut TheFox ! :OO3

Re: Compiler pour linux sous windows

Posted: Tue Oct 02, 2007 8:33 am
by Gamall
7heFøx wrote:Merci beaucoup, j'vais m'contenter d'voir avec corran si i pourrait compiler avec icc pour commencer
Comme je l'ai mentionné, ICC est un produit payant. $449 pour la version de base, quand-même ;)

Sachant que GCC fait du très bon boulot et est open-source, donc $ 0, et déjà installé sur tout machine Linux :huhu
7heFøx wrote:puis si ça va pas j'recommencerais à partir du sdk corrigé
Des SDK "corrigés", il y en a plusieurs, à toi de chercher celui qui te convient le mieux sur le net.
edit: moi j'ai utilisé celui-ci -> http://www.lucasfiles.com/index.php?s=& ... ile&id=369 comme base. Ya deux trois manips à faire pour compiler sous MVC++8 avec, mais rien de méchant.

Dans tous les cas, le réflexe à avoir, c'est de compiler sous Windows et Linux AVANT de modifier quoi que ce soit. La loi de Murphy étant ce qu'elle est, ça ne compilera pas du premier coup, et une fois que tu auras débuggé, tu sauras au moins que tu travailles sur une base propre :langue


edit/PS: Le makefile que je t'ai donné ne marchera pas avec ICC de toutes façons :D Il faudra trouver le makefile original de Raven sur internet. Je sais qu'il y est.