Pb au linkage

UniXUniX Membre
15:36 modifié dans Vos applications #1
Salut.

J'ai un petit problème à  la compilation.
Voilà  le message :
libbsb.jpg

Quelques précisions :
- mon projet importe une bibliothèque nommée libbsb (le pb semble venir de là  ...)
- cette bibliothèque est compilée PPC + intel et passée à  Lipo, donc elle doit être UB propre
- l'erreur à  la compilation ne survient quand config release, pas en debug (tout marche bien au niveau de l'appli en débug)

Réponses

  • AliGatorAliGator Membre, Modérateur
    15:36 modifié #2
    dans 1188991669:

    - l'erreur à  la compilation ne survient quand config release, pas en debug (tout marche bien au niveau de l'appli en débug)
    Ca c'est compréhensible puisqu'en configuration "Debug" le zero-link est activé, donc il n'y a pas de linkage qui est fait dans le processus de build ; donc la compilation se passe sans encombre puisqu'il n'y a pas de linkage qui suit. Et tant que tu n'utilises pas les points d'entrée qui te posent souci en release dans ton code programme, le linkeur dynamique (au runtime) qui est utilisé en mode zerolink ne cherche pas à  atteindre ce point d'entrée dans ta lib, donc ne plante pas.
  • UniXUniX Membre
    15:36 modifié #3
    Oki.

    Et aurais-tu une idée pour isoler et corriger ce problème ?
  • AliGatorAliGator Membre, Modérateur
    15:36 modifié #4
    Pas particulièrement mais :
    1) Tu sembles avoir 2 points d'entrée "main"
    2) Il ne trouve pas la librairie correspondant à  "-lbsb" (qui devrait s'appeller "libbsb" puisque le "-lx" cherche la librairie "libx.a" ou "libx.dylib")

    Le point 1 c'est sans doute parce que dans ton projet (ou plutôt dans un fichier objet que tu link avec ton projet, sinon tu auras aussi le souci avec zerolink donc en Debug) il traà®ne un point d'entrée. Par exemple tu link ton projet avec un autre projet sensé être une librairie que tu as compilée, sauf que quand tu l'as compilée tu as mis un main() dedans, sans doute pour créer un executable le temps de tester tes fonctions, mais tu l'as laissé quand tu as créé une lib, et il fait doublon avec le vrai main() de ton projet...

    Le point 2 c'est sans doute parce que tu n'as pas installé la librairie "libbsb.a" (mais bon j'imagine que c'est pas le cas) OU que si tu l'as installée (ou compilée en local ?) mais pas dans les répertoires dans lesquels le linker va chercher les librairies (donc du coup il n'arrive pas à  la trouver). Dans ce cas il faut ajouter, dans les options de projet, le répertoire dans lequel se trouve ta lib aux répertoires où chercher les libs (ce qui rajoutera l'option "-L/chemin/vers/la/lib/bsb/" à  tes options de compilation/linkage)

    Et sinon, surtout si libbsb est une lib tierce, vérifie la cohérence des headers et de la lib côté numéro de version.
  • UniXUniX Membre
    15:36 modifié #5
    Bon, pour le point 1, je ne sais pas, il faut que je regarde. Le problème c'est que je ne sais pas trop comment m'y prendre. Je vais voir.

    Pour le point 2, j'ai mis la librairie dans le dossier du projet, changé le path dans Xcode, et l'erreur disparaà®t  :o Cool ...
  • schlumschlum Membre
    15:36 modifié #6
    Tu fais gaffe aux licences quand tu utilises des bibliothèques comme ça ?
    Parce que si c'est pour ton logiciel que tu veux vendre, y inclure une bibliothèque sous licence LGPL, c'est chaud !
  • UniXUniX Membre
    15:36 modifié #7
    J'y fais gaffe à  moitié .... ???

    Ca veut dire que ce genre de librairie ne peut pas être incluse dans un logiciel commercial ?
  • schlumschlum Membre
    15:36 modifié #8
    dans 1189078834:

    J'y fais gaffe à  moitié .... ???

    Ca veut dire que ce genre de librairie ne peut pas être incluse dans un logiciel commercial ?


    À moins que tu n'aies envie de devoir rendre publiques les sources de ton projet, c'est le genre de détails où il faut faire super super attention !
    En gros, tout ce qui est GPL, LGPL, je crois qu'il vaut mieux éviter quand on est pas dans un projet OpenSource
    Pour ce qui est des licences BSD ou Apache, tu peux y aller sans problème...
  • schlumschlum Membre
    15:36 modifié #9
    Regarde, ffmpeg est aussi sous licence LGPL et GPL, et le développeur de FFMpegX évite à  tout prix de l'inclure dans son logiciel ; il demande dans sa doc d'aller le télécharger et de l'installer soi même...
    Ben c'est pour des problèmes de licence  ;)

    Ceci-dit, LGPL est probablement moins contraignant que GPL ; mais je crois qu'il faut l'éviter dans les produits commerciaux quand même.
    Il faudrait l'avis d'un spécialiste qui connaà®t bien ces deux licences...
Connectez-vous ou Inscrivez-vous pour répondre.