Je tente de compilation croisée sur AIX avec les compilateurs xlc/de xlc.compilation croisée/liens AIX xlC pour ne pas trouver C++ symboles C
Le code compile avec succès quand il utilise les paramètres par défaut sur une autre machine. Le code compile effectivement avec la compilation croisée, mais le problème vient de l'éditeur de liens. Ceci est la commande qui relie les objets ensemble:
$(CHILD_OS)/usr/vacpp/bin/xlC -q32 -qnolib -brtl -o $(EXECUTABLE) $(OBJECT_FILES)
-L$(CHILD_OS)/usr/lib
-L$(CHILD_OS)/usr/vacpp/lib/profiled
-L$(CHILD_OS)/usr/vacpp/lib
-L$(CHILD_OS)/usr/vac/lib
-L$(CHILD_OS)/usr/lib
-lc -lC -lnsl -lpthread
-F$(CHILD_OS)$(CUSTOM_CONFIG_FILE_LOCATION)
Lorsque je tente de lier le code, je reçois plusieurs symboles non définis: .setsockopt (int, int, int, const void *, unsigned long),. socket (int, int, int), .connect (int, const sockaddr *, unsigned long), etc.
J'ai découvert que les symboles manquants proviennent de la bibliothèque c standard, libc.a. Quand j'ai recherché les symboles avec nm pour la libc.a qui est en train d'être récupérée, les symboles existent bel et bien. Je devine qu'il pourrait y avoir un problème avec le C++ étant incapable de lire les objets C, mais je tire vraiment dans l'obscurité.
Je doute que les fichiers d'en-tête du parent OS sont inclus (-qnolib et -qnostdinc sont équivalentes pour xlc/xlC). J'ai exécuté nm contre libc.a sous les répertoires de bibliothèque inclus et tous les symboles ont été trouvés. Bonnes suggestions, malheureusement, déjà essayé. – bogertron
Je suggère d'exécuter nm sur les fichiers objet, pour trouver les vrais symboles qui sont recherchés - ceux listés par xlc ressemblent aux versions démolies des références C++. –