2010-10-18 24 views
1

J'essaie d'effectuer une compilation croisée avec busybox mais je reçois une 'référence indéfinie' à l'étape de la liaison. En utilisant nm, le symbole était en fait absent du fichier de bibliothèque (libbb.a dans mon cas.) En regardant dans la source ('busybox/libbb/xfuncs.c'), il y a tous ces #ifdef L_ <nom_fonction> entourant les fonctions Dans la question. Est-ce que quelqu'un sait ce que ces macros sont? Je grep à travers la source et ne peux pas trouver où ils sont définis.Qu'est-ce que la macro L_ * dans busybox?

+0

quelle version de busybox? J'ai vérifié 1.10, 1.13 et 1.17 et n'a pas pu trouver les macros L_, au moins dans le fichier que vous avez mentionné – shodanex

Répondre

1

Ces macros sont utilisées comme sentinelles pour les versions locales d'une fonction si la libc ne les fournit pas. Dans de nombreux paquets, les scripts autoconf sont censés détecter leur présence et définir les options en config.h en conséquence de sorte que les fichiers source puissent savoir ce qui devrait ou ne devrait pas être défini.

+0

je vois ... mais certaines de ces fonctions sont des choses comme bb_xstrdup et bb_strlen, que je suppose être busybox spécifique si la libc n'aurait pas ces fonctions le feraient-ils? – Ken