2009-04-13 4 views
0

J'ai un objet partagé que je crée sur les fenêtres en utilisant l'outil de suite développeur Real View lié commande sur les fenêtres hôte-printfs l'intérieur d'un objet partagé (bibliothèque dynamique) ne s'imprimé

armlink -o mylib.so < « mon * .o fichiers donnés ici ">

Ensuite, je lier une application avec cette bibliothèque partagée mylib.so sur linux en utilisant les outils gcc.

Je printf à l'intérieur des fonctions dans ce mylib.so, mais quand je lance l'exécutable final, je ne (stdio.h est inlcuded où printfs sont appelés) obtenir aucune sortie printf sur la console.

donc Y a-t-il un problème connu avec les bibliothèques partagées qui font que printf ou toutes les fonctions du système/les appels système/les fonctions de la bibliothèque d'exécution ne fonctionnent pas correctement?

Ou est-ce dû à ma configuration particulière de faire une bibliothèque partagée sur la chaîne d'outils de compilateur basée sur Windows, mais reliant cette bibliothèque partagée avec une application sur les outils du compilateur linux-gcc?

Merci.

-AD

Répondre

0

Étant donné que votre cible est le bras, et je suppose que cela est C, il ne devrait pas être un problème pour compiler des fichiers sur les fenêtres, puis un lien sur linux. Avez-vous vérifié cela cependant? Je suggère faire une hello.so sur les fenêtres, liées de hello.c:

#include <stdio.h> 
void hello(void) {printf("Hello\n");} 

puis principal lien de main.c sur linux:

void hello(void); 
int main(int argc, char *argv[]){ hello(); return 0; } 

comme un test de la chaîne minimum du compilateur.


Si vous appelez printf de code exécutable défini dans final (à savoir pas de code à partir de votre bibliothèque partagée) vous obtenez une sortie de cela?


Est-ce que

strings --print-file-name -a mylib.so final_executable | grep "string from printf in shared library" 

retour deux occurenses?


Y at-il des références à printf dans

readelf -a mylib.so 
readelf -a final_executable 

?

+0

@hlovdal: Les printfs qui sont dans l'application principale/sont imprimés correctement, seuls ceux qui se trouvent dans la bibliothèque partagée ne "sortent" rien. Aussi la création de la bibliothèque, et la liaison à l'exécutable se passe correctement, je suppose. Je vais vérifier les sorties 'readelf', 'strings --printf ..'. -AD – goldenmean

Questions connexes