Question

Je tente de compilation croisée sur AIX avec les compilateurs xlc / xlc.

Le code compile avec succès quand il utilise les paramètres par défaut sur une autre machine. Le code fait compile avec succès 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), .Connecter (int, const sockaddr *, unsigned long), etc.

Je l'ai découvert que les symboles manquants sont de la bibliothèque standard C, libc.a. Quand je regardais les symboles avec nm pour la libc.a qui est ramassé, les symboles existent bel et bien. Je suppose qu'il pourrait y avoir un problème avec le C ++ est incapable de lire les objets C, mais je suis vraiment tournais dans l'obscurité.

Était-ce utile?

La solution

Son comme il peut être un nom de C ++ problème mutiler.

Exécuter nm sur l'objet de fichiers pour trouver les symboles qu'ils recherchent. Ensuite, comparez les noms exacts contre les bibliothèques.

Vérifiez ensuite les commandes de compilation, pour faire en sorte que la bonne version des fichiers d'en-tête est inclus - peut-être est compris la copie du système d'exploitation parent par erreur

Autres conseils

J'a finalement pu contourner ce problème. On dirait que j'utilisais le compilateur C ++ pour les fichiers .c. En utilisant le compilateur xlc au lieu du compilateur xlC pour les fichiers C fixe ce problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top