Forcer la compilation avec une edition de liens static

xbabilone Messages postés 47 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 7 janvier 2018 - 20 déc. 2009 à 18:53
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 23 déc. 2009 à 21:47
Salut a tous .
Je voudrai compiler supertuxkart avec une edition de liens static.
Je suppose qu'il ya une option a passer au compilateur et donc modifier le makefile.
Je ne suis pas un expert sur ces questions.

Merci et bonne fetes a tous!

5 réponses

xbabilone Messages postés 47 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 7 janvier 2018 2
23 déc. 2009 à 21:34
Salut .
Dans mon makefile j'avais :

CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -Wall -Wstrict-prototypes -Wmissing-prototypes -DNDEBUG -O2
CPP = gcc -E
CPPFLAGS CXX g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -Wall -DNDEBUG -O2

Que j'ai transformé en :

CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -Wall -Wstrict-prototypes -Wmissing-prototypes -DNDEBUG -O2 -static
CPP = gcc -E
CPPFLAGS = -static
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -Wall -DNDEBUG -O2 -static



Et la j'ai une erreure avec le linker:

/usr/bin/ld: cannot find -lglut
collect2: ld a retourné 1 code d'état d'exécution
make[2]: *** [supertuxkart] Erreur 1


Cela ne m'ettone pas parce que pour conpiler supertuxkart en static
il faut que toutes les librarys soit d'abord compilées en static.
Donc j'ai installé toutes les versions de library contenants un fichier "xxx.a".Et la seule library que je n'est pas trouvé en static c'est "libmesaglut3-devel".Je pense que le fichier qui me manque doit s'appeler
"libglut.a" ou "lglut"
1
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
20 déc. 2009 à 22:46
Regarde le contenu du makefile, il doit y avoir une règle qui permet de le faire.

Si tu ne la trouve pas, il te faudra la créer. Dans un premier temps vérifie son existence, on verra après pour la suite.
0
xbabilone Messages postés 47 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 7 janvier 2018 2
21 déc. 2009 à 21:12
j'ai cherché dans le makefile et je n'est pas trouvé de cibles pour une compilation static des bibliotheques.
Merci pour ta reponse.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
23 déc. 2009 à 02:45
Change la règle utilisant gcc ou g++ par: gcc -static ou g++ -static.
D'une manière un peu crade, tu peux essayer de changer $(CXX) via CXX=$(CXX) -static
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
23 déc. 2009 à 21:47
Le terme "library" se traduit en français par bibliothèque, et non librairie (bookstore en anglais).

Effectivement, tu as tout à fait raison, il te faut les bibliothèques statiques pour pouvoir compiler ton programme en statique. Donc sans les *.a, ça risque d'être difficile.
Essaie de voir sur ton système, si tu n'as pas ce fichier.

locate libglut.a


Essaie, si tu ne trouves pas ce fichier, d'installer glut via les dépôts. Il y parfois ce fichier qui est distribué avec. Sinon, tu n'as pas d'autre choix que de faire une bonne grosse recherche sur Google (ce n'est pas agréable, mais là on ne peut pas faire autrement).
0
Rejoignez-nous