IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Solaris] édition de lien gcc


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    CTO
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut [Solaris] édition de lien gcc
    Bonjour à tous,

    J'ai un petit projet de simulation d'ascensceur dans le cadre de mon cours de C.
    Le but du projet est de se familiariser avec les threads et les processus.

    Nous travaillons sur un serveur Sun Fire T2000 avec 8core supportant chacun jusqu'à 4 threads. Nous sommes donc sous solaris.


    Pour l'instant j'ai un fichier main.c, un fichier call.c, un fichier call.h que j'ai fait ainsi qu'un fichier arrivals.o et un arrivals.h que j'ai recu dans l'énoncé.

    La main appelle la fonction start() de arrivals qui créé un processus fils qui va faire des appels à la fontion call() de call.

    Seulement j'ai quelque problèmes à la compilation avec gcc.

    Voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gcc -o simulateur src/main.o src/call.o src/arrivals.o 
    ld: fatal: file src/main.o: wrong ELF machine type: EM_386
    ld: fatal: File processing errors. No output written to simulateur
    collect2: ld returned 1 exit status
    *** Error code 1
    make: Fatal error: Command failed for target `simulateur'

    Voici mon makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    CC=gcc
    CFLAGS=-Wall -Werror -ansi -pedantic
    LDFLAGS=
    EXEC=simulateur
    SRC= src/main.c src/call.c
    OBJ= $(SRC:.c=.o)
     
    all: $(EXEC)
     
    simulateur: $(OBJ)
    	$(CC) -o $@ $^ src/arrivals.o $(LDFLAGS)
     
    %.o: %.c
    	$(CC) -o $@ -c $< $(CFLAGS)
     
    .PHONY: clean mrproper
     
    clean:
    	rm -rf *.o
     
    mrproper: clean
    	rm -rf $(EXEC)
    Si vous avez besoin du code d'un des fichiers, je me ferrai un plaisir de vous le copier ici.

    Merci d'avance à tous pour votre aide.

    A bientôt

    *Serval

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Pas le bon forum (forum Outils).

    Citation Envoyé par *Serval Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gcc -o simulateur src/main.o src/call.o src/arrivals.o 
    ld: fatal: file src/main.o: wrong ELF machine type: EM_386
    ld: fatal: File processing errors. No output written to simulateur
    collect2: ld returned 1 exit status
    *** Error code 1
    make: Fatal error: Command failed for target `simulateur'
    Il semble que le format des binaires generes par gcc (ou le format d'une ou plusieurs bibliotheques utilisees) n'est pas correct. Tu compiles pour la machine cible ? Tu n'as pas recupere un des fichiers objet d'une autre machine ?

  3. #3
    Membre à l'essai
    Profil pro
    CTO
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Salut DaZumba et merci de t'interesser à mon problème.

    Citation Envoyé par DaZumba Voir le message
    Pas le bon forum (forum Outils).
    Oups désolé, j'ai hésité


    Citation Envoyé par DaZumba Voir le message
    Il semble que le format des binaires generes par gcc (ou le format d'une ou plusieurs bibliotheques utilisees) n'est pas correct. Tu compiles pour la machine cible ? Tu n'as pas recupere un des fichiers objet d'une autre machine ?
    Oui le fichier .o que j'ai reçu a été compilé sous Solaris (sur la même machine).

    J'ai essayé de comprendre un peu les histoires de liens (ld, ELF,...) mais je ne connais pas grand chose dans ce domaine et j'ai du mal.


    Merci d'avance

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par *Serval Voir le message
    J'ai essayé de comprendre un peu les histoires de liens (ld, ELF,...) mais je ne connais pas grand chose dans ce domaine et j'ai du mal.
    Les fichiers objets (.o, .a, .so) sont des fichiers binaires qui suivent un format particulier. Apparemment, tu es sur un SPARC mais tu utilises le format x86, ce qui n'est pas normal. Essaie les commandes file et elfdump sur tes fichiers objets. S'ils indiquent 80386 ou EM_386, alors tu n'es pas au bon format. La question est alors de savoir pourquoi gcc ne produit pas les objets au format attendu. Si les objets sont au bon format, alors ce sont les bibliotheques installees avec gcc qui ne sont pas adaptees a ta plateforme.

  5. #5
    Membre à l'essai
    Profil pro
    CTO
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Merci DaZumba

    En effet, j'avais un fichier qui était compilé sur une machine intel

    C'est résolu, merci beaucoup pour ton aide rapide et efficace


    @+ (surement très bientôt)

    *Serval

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreurs d'édition des liens en passant de GCC 4.5 à 4.6
    Par uriotcea dans le forum Débuter
    Réponses: 3
    Dernier message: 18/07/2012, 21h32
  2. Problème d'édition des liens avec GCC
    Par uriotcea dans le forum Débuter
    Réponses: 2
    Dernier message: 06/06/2011, 11h17
  3. Ordre de l'édition des liens avec GCC
    Par Matthieu Brucher dans le forum Linux
    Réponses: 6
    Dernier message: 29/08/2006, 07h56
  4. [Dev-C++] Problème d'édition des liens
    Par shura dans le forum EDI
    Réponses: 5
    Dernier message: 30/08/2005, 09h35
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo