GNU/Linux >> Tutoriels Linux >  >> Linux

Liez le fichier .so au fichier .cpp via la compilation g++

maintenant, d'après ce que je peux voir, la commande est -l + filename , par exemple mon nom de fichier est directory/libtest.so ce serait -ldirectory/libtest.so

Non, ce n'est pas correct. Il devrait être -Ldirectory -ltest c'est-à-dire que vous utilisez -L pour ajouter un répertoire aux chemins de recherche où l'éditeur de liens recherchera des bibliothèques, et vous dites à quelles bibliothèques lier avec -l , mais pour lier à libtest.so ou libtest.a vous dites -ltest sans le lib préfixe ou l'extension de fichier.

Vous pouvez lien en nommant le fichier explicitement, sans -L ou -l options, c'est-à-dire juste directory/libtest.so , mais pour les bibliothèques dynamiques, c'est presque toujours la mauvaise chose à faire, car il intègre ce chemin exact dans l'exécutable, de sorte que la même bibliothèque doit être au même endroit lorsque le programme s'exécute. Vous souhaitez généralement créer un lien vers celui-ci par son nom (et non par son chemin) afin que la bibliothèque portant ce nom puisse être utilisée à partir de n'importe quel emplacement au moment de l'exécution.


Il s'agit d'une procédure étape par étape pour créer et lier un fichier .so avec un fichier .cpp

  1. Créez le fichier .cpp que vous souhaitez convertir en .so.
    Exemple -
    #include<stdio.h> int add(int a , int b) { return a+b;}

    Enregistrez-le sous le nom add.cpp

  2. Créez .so avec la commande suivante
    gcc -c -fPIC add.cpp -o add.o

    Cela crée libadd.so

  3. Créez un fichier .cpp qui utilisera ce fichier .so
    Exemple-
    #include<stdio.h> extern int add(int a, int b); int main(int argc, char** argv) { printf("Hello the output is %d \n",add(10,15)); return 0; }

    Enregistrez-le sous main_file.cpp

  4. Créez un fichier .o à partir de ce fichier à l'aide de cette commande
    g++ -c main_file.cpp

  5. Liez .so avec .o en utilisant cette commande
    g++ -o prog main_file.o -L. -ladd

    Ici L spécifie le dossier avec le fichier .so
    Et -l spécifie le nom de la bibliothèque .so

  6. Exécutez le programme avec la commande
    ./prog


Linux
  1. Liens physiques et liens souples sous Linux expliqués

  2. Comment activer ExecCGI via le fichier .htaccess ?

  3. Comment insérer un lien vers un fichier dans WordPress

  4. Envoi de fichier via netcat

  5. Déplacer un fichier et laisser un lien symbolique derrière

Comment créer un lien symbolique sous Linux à l'aide de la commande Ln

Comment télécharger un fichier à l'aide de Wget via un proxy sous Linux

Comment protéger par mot de passe les sites Web via .htaccess

Comment télécharger des fichiers via le gestionnaire de fichiers

Comment supprimer un fichier/dossier via le gestionnaire de fichiers

Qu'est-ce que les liens symboliques sous Linux ? Comment créer des liens symboliques ?