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 :

création d'une "dll" sous linux


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Points : 78
    Points
    78
    Par défaut création d'une "dll" sous linux
    Bonjour, reBonjour ...

    Alors voila, j'ai réalisé un code en C. Ce code va etre compilé en une dll pour windows. Cette dll fonctionne bien ...

    Maintenant je voudrais réaliser la meme chose sous linux, reprendre mon compte et le compiler pour en faire une dll ... Enfin un semblant de dll puisque j'ai vu que sous linux c'était des .so et pas des .dll ...

    Je pense avoir rendu mon code portable ... Maintenant reste plus qu'a le prouver en compilant le code sous linux ...

    Mais je suis un peu perdu :s ...

    Je ne sais pas trop comment arriver a mes fins, pour avoir le meme resultat que sous windows une bibliothèque de fonction que je pourrais utiliser dans une autre application !

    merci pour votre futur aide !

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par nuFox Voir le message
    Bonjour, reBonjour ...

    Alors voila, j'ai réalisé un code en C. Ce code va etre compilé en une dll pour windows. Cette dll fonctionne bien ...

    Maintenant je voudrais réaliser la meme chose sous linux, reprendre mon compte et le compiler pour en faire une dll ... Enfin un semblant de dll puisque j'ai vu que sous linux c'était des .so et pas des .dll ...

    Je pense avoir rendu mon code portable ... Maintenant reste plus qu'a le prouver en compilant le code sous linux ...

    Mais je suis un peu perdu :s ...

    Je ne sais pas trop comment arriver a mes fins, pour avoir le meme resultat que sous windows une bibliothèque de fonction que je pourrais utiliser dans une autre application !

    merci pour votre futur aide !
    Tout est là: http://www.dwheeler.com/program-libr...WTO/index.html.

    Thierry

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Points : 78
    Points
    78
    Par défaut
    Merci pour le lien ...

    Reste plus qu'a rendre mon code portable ^^

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nuFox Voir le message
    Mais je suis un peu perdu :s ...
    Rien de tel qu'un bon exemple

    Fichier "carre.c"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned long carre(short n)
    {
        return n * n;
    }
    Compilation: gcc -c carre.c

    Fichier "cube.c"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    long cube(short n)
    {
        return n * n * n;
    }
    Compilation: gcc -c cube.c

    Fichier "pgm.c"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    int main()
    {
        printf("carre(5)=%lu\n", carre(5));
        printf("cube(5)=%ld\n", cube(5));
    }
    Création de la librairie statique: ar rv lib.a carre.o cube.o
    Création de la librairie dynamique: gcc -shared carre.o cube.o -o lib.so

    Compilation en utilisant la librairie statique: gcc pgm.c lib.a -o pgm
    Compilation en utilisant la librairie dynamique: gcc pgm.c ./lib.so -o pgm

    La compilation avec librairie statique intègre le code de la librairie dans l'exécutable. La librairie peut être effacée, l'exécutable fonctionne toujours.
    La compilation avec librairie dynamique ne fait que référencer le code de la librairie dans l'exécutable. Pour qu'il fonctionne, il faut que la librairie soit présente à l'endroit indiqué (ou dans un des répertoires cités par la variable LD_LIBRARY_PATH)

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Points : 78
    Points
    78
    Par défaut
    Dans mon cas, je ne réutilise pas la dll dans une application C ...

    Je dois l'utiliser dans une application labView ...

    Donc il faut que je créée une librairie dynamique mais je zap l'étape de linkage ... Ok j'pense avoir compris ...

    Mais la mon plus grand soucis c'est de faire le
    Compilation: gcc -c carre.c

    Car apparement il est pas très portable mon code


    Mais merci pour l'exemple

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Points : 78
    Points
    78
    Par défaut
    Que de warning et d'erreur a la compilation .. Un code qui marchait si bien sous windows ... sniff sniff

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nuFox Voir le message
    Que de warning et d'erreur a la compilation .. Un code qui marchait si bien sous windows ...
    Car apparement il est pas très portable mon code
    Ben si ton code tape directement dans le spécifique zindow (style l'écran via OpenGL ou la base de registres ou le NTFS) ça risque de pas trop marcher sous Linux....

Discussions similaires

  1. Formater une cassette de sauvegarde sous LINUX
    Par dragonfly dans le forum Administration système
    Réponses: 10
    Dernier message: 22/03/2006, 11h02
  2. Creer une base de donnée sous linux
    Par nissarte dans le forum Installation
    Réponses: 2
    Dernier message: 01/03/2006, 14h56
  3. Attaquer une base Oracle installée sous linux
    Par lessoy dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2005, 13h54

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