GNU/Linux >> Tutoriales Linux >  >> Linux

¿Dónde coloco bibliotecas de terceros para configurar un entorno de desarrollo de C++ Linux?

Dónde colocar las bibliotecas

La mejor solución es utilizar el sistema de empaquetado de su distribución de Linux (apt-get , yum , o similar) para instalar bibliotecas desde paquetes proporcionados por la distribución siempre que sea posible.

Si las bibliotecas empaquetadas de la distribución no son de una versión lo suficientemente reciente, o si necesita algunas opciones de compilación no estándar, o si necesita una biblioteca que su distribución no proporciona, puede compilarla e instalarla usted mismo. Tiene dos opciones principales para colocar la biblioteca:

  • /usr/local (bibliotecas bajo /usr/local/lib , encabezados bajo /usr/local/include ). Esto instala las bibliotecas en todo el sistema y es probablemente la solución más sencilla, ya que entonces debería poder compilar contra ellas sin realizar ningún paso adicional. NO instale bibliotecas directamente bajo /usr , ya que eso interferirá con el sistema de empaquetado de su distribución.
  • En el directorio de su proyecto, como lo hizo en Windows. Esto tiene las ventajas de no requerir acceso de raíz y no realizar cambios en todo el sistema, pero tendrá que actualizar las rutas de inclusión y las rutas de biblioteca de su proyecto, y tendrá que colocar los archivos de biblioteca compartidos en algún lugar donde el enlazador dinámico pueda encontrarlos ( usando LD_LIBRARY_PATH o ld.so.conf - ver el enlace para más detalles).

Cómo funcionan las bibliotecas

Consulte el excelente CÓMO de la biblioteca de programación de David A. Wheeler. Recomiendo leer eso y luego publicar cualquier pregunta específica como nuevos temas.

Cómo distribuir tu programa

Tradicionalmente, los programas Unix/Linux no incluyen copias de sus dependencias. En cambio, depende del usuario final o del desarrollador instalar esas dependencias ellos mismos. Esto puede requerir un "LÉAME grande", como dijiste, pero tiene algunas ventajas:

  • Las bibliotecas de desarrollo se pueden instalar, administrar y actualizar a través del administrador de paquetes de la distribución, en lugar de que cada copia de origen tenga su propio conjunto de bibliotecas para rastrear.
  • Solo hay una copia de cualquier biblioteca determinada en un sistema, por lo que solo hay un lugar que debe actualizarse si, por ejemplo, se encuentra una falla de seguridad. (Por ejemplo, considere el caos que se produjo cuando se descubrió que zlib, una biblioteca de compresión muy utilizada, tenía una falla de seguridad, por lo que todas las aplicaciones que incluían una versión afectada debían actualizarse).
  • Si su programa es lo suficientemente popular (y es de código abierto o, al menos, está disponible gratuitamente), es posible que los mantenedores de paquetes de varias distribuciones de Linux deseen empaquetarlo e incluirlo en su distribución. Mantenedores de paquetes realmente no me gustan las bibliotecas empaquetadas. Consulte, por ejemplo, la página de Fedora sobre el tema.

Si está distribuyendo su programa a los usuarios finales, puede considerar ofrecer un paquete (.dpkg o .rpm ) que simplemente podían descargar e instalar sin tener que usar la fuente. Idealmente, desde la perspectiva del usuario final, el paquete se agregaría a los repositorios de las distribuciones (si es de código abierto o al menos está disponible gratuitamente) para que los usuarios puedan descargarlo usando sus administradores de paquetes (apt-get o yum ). Todo esto puede complicarse debido a la gran cantidad de distribuciones de Linux que existen, pero un .dpkg compatible con Debian/Ubuntu y un .rpm compatible con Red Hat/CentOS/Fedora debería cubrir un buen porcentaje de usuarios finales. La creación de paquetes no es demasiado difícil y hay buenos procedimientos en línea.


para la primera parte de su pregunta con respecto a Windows:no hay un lugar estándar real para bibliotecas/encabezados en Windows, por lo que la solución fácil es:cree el suyo propio. Simplemente proporcione un solo lib/ e include/ en su sistema y haga que todos sus proyectos lo usen (estableciendo la ruta en un archivo cmake que incluye en todas partes). Ponga todas las bibliotecas de terceros allí, por ejemplo:

tus proyectos:

d:/projects/projectA
d:/projects/projectB

material de terceros:

d:/api/lib/lua.lib
d:/api/include/lua/....

(incluso puede usar enlaces simbólicos, también conocidos como 'uniones de directorio' si tiene una versión diferente)

y el archivo cmake correspondiente:

include_directories( d:/api/include )
link_directories( d:/api/lib )

Linux
  1. Una guía para comprender las bibliotecas de software de Linux en C

  2. Desarrollo Flex en Linux, ¿cuál es un buen entorno libre?

  3. Biblioteca compartida dinámica de C++ en Linux

  4. Establecer variable de entorno con espacio en Linux

  5. Cómo configurar googleTest como una biblioteca compartida en Linux

Cómo establecer y enumerar variables ambientales en Linux

Configurar el entorno de desarrollo local de WordPress en Linux

Cómo configurar y desactivar variables de entorno en Linux

Linux:¿dónde se almacena la cadena de entorno real?

¿Dónde se deben establecer las variables de entorno para Jenkins?

Configuración de un entorno de desarrollo brillante dentro de Linux en Windows 10