GNU/Linux >> Tutoriales Linux >  >> Linux

Vincule el archivo .so al archivo .cpp a través de la compilación g ++

ahora, por lo que puedo ver, el comando es -l + filename , por ejemplo, mi nombre de archivo es directory/libtest.so seria -ldirectory/libtest.so

No, eso no es correcto. Debería ser -Ldirectory -ltest es decir, usas -L para agregar un directorio a las rutas de búsqueda donde el enlazador buscará bibliotecas, y usted dice a qué bibliotecas enlazar con -l , sino para vincular a libtest.so o libtest.a dices -ltest sin el lib prefijo o la extensión del archivo.

Tu puedes enlace nombrando el archivo explícitamente, sin -L o -l opciones, es decir, solo directory/libtest.so , pero para las bibliotecas dinámicas, eso casi siempre es incorrecto, ya que incrusta esa ruta exacta en el ejecutable, por lo que la misma biblioteca debe estar en el mismo lugar cuando se ejecuta el programa. Por lo general, desea vincularlo por nombre (no por ruta) para que la biblioteca con ese nombre se pueda usar desde cualquier ubicación en tiempo de ejecución.


Este es un procedimiento paso a paso de cómo crear y vincular un archivo .so con un archivo .cpp

  1. Cree el archivo .cpp que desea convertir a .so.
    Ejemplo -
    #include<stdio.h> int add(int a , int b) { return a+b;}

    Guárdelo por nombre add.cpp

  2. Crea .so con el siguiente comando
    gcc -c -fPIC add.cpp -o add.o

    Esto crea libadd.so

  3. Cree un archivo .cpp que usará este archivo .so
    Ejemplo-
    #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; }

    Guárdelo como main_file.cpp

  4. Cree un archivo .o a partir de este archivo usando este comando
    g++ -c main_file.cpp

  5. Enlace .so con .o usando este comando
    g++ -o prog main_file.o -L. -ladd

    Aquí L especifica la carpeta con el archivo .so
    Y -l especifica el nombre de la biblioteca .so

  6. Ejecuta el programa con el comando
    ./prog


Linux
  1. Cómo crear un archivo en Plesk File Manager

  2. Bloqueo de acceso a través de un archivo .htaccess

  3. Enlaces duros y enlaces blandos en Linux explicados

  4. Eliminar líneas vacías en un archivo de texto a través de grep

  5. ¿Cuándo sería útil crear un enlace duro?

Cómo crear un enlace simbólico en Linux usando el comando Ln

Cómo descargar archivos usando Wget a través de Proxy en Linux

Cómo proteger con contraseña los sitios web a través de .htaccess

Cómo cargar archivos a través del Administrador de archivos

Cómo eliminar archivos/carpetas a través del administrador de archivos

¿Qué son los enlaces simbólicos en Linux? ¿Cómo crear enlaces simbólicos?