Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ubuntu] Impossible de compiler en Objective-C avec GCC

Bibliothèque non trouvée

Sujet résolu
    30 juillet 2007 à 0:28:07

    Bonjour tout le monde,

    Voilà, j'utilise Ubuntu à l'occasion en utilisant Parallel (logiciel pour virtualiser un PC sur Mac, peu importe), j'essaye de compiler en Objective-C avec GCC (ce qui n'a rien d'anormal) mais impossible d'y parvenir.
    Le compilateur me dit que /usr/bin/ld ne trouve pas la bibliothèque objc, je tape ceci dans la console :

    gcc -lobjc test.m -o test


    J'ai installé/mis-à-jour GCC et ObjC via apt-get, il me dit, lorsque je réutilise update ou install, que tout est bon et qu'il n'y a rien à installer de plus... Pourtant, pour commencer, le dossier "objc" n'était pas installé dans le dossier "include" et même après l'avoir installé manuellement, je ne peux pas utiliser objc, je cherche dans le dossier /usr/lib, et je trouve la "bibliothèque partagée" : libobjc.so.1.0.0... je ne sais pas si ce nom est "normal"...

    En tous les cas ma question est simple : COmment puis-je parvenir à compiler en Objective-C sous Ubuntu ?

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2007 à 1:15:18

      Salut,

      Pour le nom de la bibliothèque, pas d'inquiétude, c'est "normal". Le numéro de version est presque toujours inclus dans le nom de fichier, c'est un moyen simple mais efficace d'éviter le "DLL Hell". ;)

      Quand tu dis que tu as installé "manuellement" le dossier objc, tu peux préciser un peu ? D'où venait le contenu ?

      Je ne sais pas comment les fichiers sont organisés sous Ubuntu, mais sous ma Slack, les fichiers d'en-tête de base d'Objective-C ne sont pas dans /usr/include/objc mais quelque part dans /usr/lib/gcc/.

      Bon, cela dit, le problème ne semble pas venir de l'emplacement des fichiers d'en-tête, puisque c'est le linker qui échoue...

      À tout hasard, essaye d'exécuter ldconfig (en root), pour mettre à jour la liste des bibliothèques partagées (mais normalement, le gestionnaire de paquetage a déjà du se charger de le faire)...
      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2007 à 10:51:50

        Citation : gouttegd

        Quand tu dis que tu as installé "manuellement" le dossier objc, tu peux préciser un peu ? D'où venait le contenu ?



        En fait, j'ai télécharger l'archive de gcc-objc sur le site de gcc et j'ai simplement copié le dossier "objc" dans le dossier "/usr/include/".

        Citation : gouttegd

        Je ne sais pas comment les fichiers sont organisés sous Ubuntu, mais sous ma Slack, les fichiers d'en-tête de base d'Objective-C ne sont pas dans /usr/include/objc mais quelque part dans /usr/lib/gcc/.



        Je n'ai malheureusement même pas ce dossier gcc dans lib...

        Citation : gouttegd

        À tout hasard, essaye d'exécuter ldconfig (en root), pour mettre à jour la liste des bibliothèques partagées (mais normalement, le gestionnaire de paquetage a déjà du se charger de le faire)...



        Aucun changement, je conserve ce message :

        /usr/bin/ld: cannot find -lobjc
        collect2: ld a retourné 1 code d'état d'exécution
        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2007 à 11:37:24

          Bon...

          Essaye d'ajouter l'option -L/repertoire/contenant/libobjc à la ligne de commande de gcc, pour lui indiquer où il peut trouver la bibliothèque. Mais normalement, là encore ce n'est pas nécessaire, si la bibliothèque se trouve dans /usr/lib...
          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2007 à 12:41:36

            Avec ce système j'ai d'autres messages d'erreur :

            test.m:(.text+0x1a): undefined reference to `objc_get_class'
            test.m:(.text+0x2d): undefined reference to `objc_msg_lookup'
            test.m:(.text+0x54): undefined reference to `objc_msg_lookup'
            /tmp/ccu5oiKJ.o: In function `__objc_gnu_init':
            test.m:(.text+0x85): undefined reference to `objc_exec_class'
            /tmp/ccu5oiKJ.o:(.data+0x4c): undefined reference to `__objc_class_name_Object'
            collect2: ld a retourné 1 code d'état d'exécution


            :euh:

            Je suis quelque peu perplexe... Après m'avoir dit que libobjc n'existe pas il me dit que les fonctions objc standard n'existe pas. o_O
            • Partager sur Facebook
            • Partager sur Twitter
              30 juillet 2007 à 12:59:13

              <HS>Tiens, je croyais que le bug qui conduit à l'affichage d'entités XML dans la balise zcode avait été corrigé...</HS>

              Hum, je ne sais pas si ça vient de la Ubuntu (je n'ai jamais caché ce que je pensais de cette distribution :p ), mais là, entre les fichiers d'en-tête qui n'étaient pas installés correctement et le linker qui n'était pas configuré pour rechercher les bibliothèques dans les répertoires standards... je crois qu'il y a clairement un problème général dans ton installation...

              Bon, vérifie quand même la liste des symboles dans libobjc.so :
              nm -D /usr/lib/libobjc.so.1.0.0 | grep objc_get_class
              • Partager sur Facebook
              • Partager sur Twitter
                30 juillet 2007 à 14:54:38

                Bon j'ai réglé le problème très simplement j'ai tout réinstallé, et j'ai ensuite utilisé apt-get directement.

                Merci pour ton aide.
                • Partager sur Facebook
                • Partager sur Twitter

                [Ubuntu] Impossible de compiler en Objective-C avec GCC

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown