Forcer la compilation avec une edition de liens static

Signaler
Messages postés
47
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
7 janvier 2018
-
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
-
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

Messages postés
47
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
7 janvier 2018
2
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"
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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.
Messages postés
47
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
7 janvier 2018
2
j'ai cherché dans le makefile et je n'est pas trouvé de cibles pour une compilation static des bibliotheques.
Merci pour ta reponse.
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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).