Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FreeBSD] GNUstep problème de compilation d'une application

4 réponses
Avatar
Eric S.
Bonjour,

Je reposte ici un message posté sur fr.comp.applications.x11 où l'on
m'a redirigé vers vous.

Donc voici mon problème : j'ai installé il y a qques jours
l'environnement GNUstep (et ça sur FreeBSD 8.0-RELEASE).
Pour info, voici les versions des ports installés :
gnustep-back-0.17.1_2
gnustep-base-1.19.3_1
gnustep-gui-0.17.1_2
gnustep-make-2.2.0_1

J'ai testé la création d'une application en suivant un tutorial trouvé
sur le net (avec Gorm).
Et quand je lance le make (avec gmake) j'obtiens alors :

Linking app Todo ...
/usr/bin/ld: warning: libobjc.so.4, needed by /usr/local/GNUstep/
System/Library/Libraries/libgnustep-base.so, may conflict with
libobjc.so.2
/usr/local/GNUstep/System/Library/Libraries/libgnustep-base.so:
undefined reference to `gnustep_base_user_main'
collect2: ld returned 1 exit status
gmake[2]: *** [Todo.app/./Todo] Erreur 1
gmake[1]: *** [internal-app-run-compile-submake] Erreur 2
gmake: *** [Todo.all.app.variables] Erreur 2

Et en effet j'ai deux bibliothèques libobjc sur le système :
- celle du système de base : /usr/lib/libobjc.so.4
- et celle installé par gcc (qui est une dépendance pour l'installation
des ports gnustep*) : /usr/local/lib/gcc42/libobjc.so.2

Je ne pige pas que libgnustep-base.so ait été compilé avec la biblio du
système alors que gcc était une dépendance.

Comment puis-je indiquer dans mon GNUmakefile que je veux utiliser
libobjc.so.4 pour compiler mon application.

Merci à ceux qui auront pris le temps de me lire.
--
Eric S. [eric point servant chez gmail point com]

4 réponses

Avatar
JKB
Le 21-05-2010, ? propos de
[FreeBSD] GNUstep problème de compilation d'une application,
Eric S. ?crivait dans fr.comp.os.bsd :
Bonjour,



Bonjour,

Je reposte ici un message posté sur fr.comp.applications.x11 où l'on
m'a redirigé vers vous.

Donc voici mon problème : j'ai installé il y a qques jours
l'environnement GNUstep (et ça sur FreeBSD 8.0-RELEASE).
Pour info, voici les versions des ports installés :
gnustep-back-0.17.1_2
gnustep-base-1.19.3_1
gnustep-gui-0.17.1_2
gnustep-make-2.2.0_1

J'ai testé la création d'une application en suivant un tutorial trouvé
sur le net (avec Gorm).
Et quand je lance le make (avec gmake) j'obtiens alors :

Linking app Todo ...
/usr/bin/ld: warning: libobjc.so.4, needed by /usr/local/GNUstep/
System/Library/Libraries/libgnustep-base.so, may conflict with
libobjc.so.2
/usr/local/GNUstep/System/Library/Libraries/libgnustep-base.so:
undefined reference to `gnustep_base_user_main'
collect2: ld returned 1 exit status
gmake[2]: *** [Todo.app/./Todo] Erreur 1
gmake[1]: *** [internal-app-run-compile-submake] Erreur 2
gmake: *** [Todo.all.app.variables] Erreur 2

Et en effet j'ai deux bibliothèques libobjc sur le système :
- celle du système de base : /usr/lib/libobjc.so.4
- et celle installé par gcc (qui est une dépendance pour l'installation
des ports gnustep*) : /usr/local/lib/gcc42/libobjc.so.2

Je ne pige pas que libgnustep-base.so ait été compilé avec la biblio du
système alors que gcc était une dépendance.

Comment puis-je indiquer dans mon GNUmakefile que je veux utiliser
libobjc.so.4 pour compiler mon application.

Merci à ceux qui auront pris le temps de me lire.



Comme ça, c'est assez difficile à dire. Dans le répertoire en
question, il doit y avoir un Makefile. Rechercher dans ce Makefile
'-lobjc' et rajouter devant '-L/usr/local/lib/gcc42'. Une autre
solution, modifier l'ordre de résolution des bibliothèques, mais
sous FreeBSD, je ne sais plus comment faire.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Patrick Lamaizière
JKB :
Comme ça, c'est assez difficile à dire. Dans le répertoire en
question, il doit y avoir un Makefile. Rechercher dans ce Makefile
'-lobjc' et rajouter devant '-L/usr/local/lib/gcc42'. Une autre
solution, modifier l'ordre de résolution des bibliothèques, mais
sous FreeBSD, je ne sais plus comment faire.



Il y a libmap.conf(5)

Idée: regarder comment font les ports existants des applis GNUstep ?
Avatar
Eric S.
Patrick Lamaizière [21-05-2010] :
JKB :
Comme ça, c'est assez difficile à dire. Dans le répertoire en
question, il doit y avoir un Makefile. Rechercher dans ce Makefile
'-lobjc' et rajouter devant '-L/usr/local/lib/gcc42'. Une autre
solution, modifier l'ordre de résolution des bibliothèques, mais
sous FreeBSD, je ne sais plus comment faire.



Il y a libmap.conf(5)

Idée: regarder comment font les ports existants des applis GNUstep ?



Bonsoir,

Pour répondre à JKB, mon GNUmakefile ne fait qu'inclure les makefiles
"principaux" de GNUstep, dans lesquels, certainement, je devrais
retrouver cet directive. Je vais tester ça et viendrait vous faire un
retour.

Et merci à Patrick pour le conseil : je vais jeter un oeil dans les
ports.
--
Eric S. [eric point servant chez gmail point com]
Avatar
Eric S.
Eric S. [21-05-2010] :
Patrick Lamaizière [21-05-2010] :
JKB :
Comme ça, c'est assez difficile à dire. Dans le répertoire en
question, il doit y avoir un Makefile. Rechercher dans ce Makefile
'-lobjc' et rajouter devant '-L/usr/local/lib/gcc42'. Une autre
solution, modifier l'ordre de résolution des bibliothèques, mais
sous FreeBSD, je ne sais plus comment faire.



Il y a libmap.conf(5)

Idée: regarder comment font les ports existants des applis GNUstep ?



Bonsoir,

Pour répondre à JKB, mon GNUmakefile ne fait qu'inclure les makefiles
"principaux" de GNUstep, dans lesquels, certainement, je devrais
retrouver cet directive. Je vais tester ça et viendrait vous faire un
retour.

Et merci à Patrick pour le conseil : je vais jeter un oeil dans les
ports.



Bonjour,

J'ai passé plusieurs heures sur le problème, en comparant avec une appli
prise dans les ports : rien à faire.

J'ai essayé la manip de JKB, le libmap.conf : nada

J'ai donc tout effacé et j'ai recommencé tout depuis le début et ça
fonctionne.

Donc je sais pas où j'ai bien pu faire une erreur.
--
Eric S. [eric point servant chez gmail point com]