Articles of linker

Ldd jerárquico (1)

Debido al uso de Gentoo, a menudo sucede que después de una actualización, los progtwigs se vinculan con versiones anteriores de las bibliotecas. Normalmente, revdep-rebuild ayuda a resolver eso, pero esta vez es una dependencia de una biblioteca de python, y python-updater no lo detectará. ¿Hay una variante “jerárquica” de ldd que me muestre qué […]

error LNK2005: xxx ya se ha definido en MSVCRT.lib (MSVCR100.dll) C: \ something \ LIBCMT.lib (setlocal.obj)

Estoy usando la biblioteca DCMTK para leer archivos Dicom (formato de imagen utilizado en el procesamiento de imágenes médicas). Tengo un problema para comstackr este código fuente DCMTK. DCMTK utiliza algunas bibliotecas externas adicionales (zlib, tiff, libpng, libxml2, libiconv). Sé que todas las bibliotecas deberían generarse con las mismas Opciones de Generación de Código. He […]

¿Diferencia entre objetos compartidos (.so), bibliotecas estáticas (.a) y DLL (.so)?

He estado involucrado en algún debate con respecto a las bibliotecas en Linux, y me gustaría confirmar algunas cosas. A mi entender (corríjanme si me equivoco y editaré mi publicación más tarde), hay dos formas de usar las bibliotecas al crear una aplicación: Bibliotecas estáticas (archivos .a): en el momento del enlace, se coloca una […]

Cómo incluir OpenSSL en un proyecto de Qt

Soy nuevo en Qt, he hecho algo de Google y no puedo encontrar una respuesta lo suficientemente detallada. Necesito usar OpenSSL en mi proyecto Qt basado en qmake. ¿Cómo hago para descargarlo / instalarlo / vincularlo, así puedo hacer una statement de inclusión y usar sus funciones en mi código?

¿Cómo se especifica una ruta de biblioteca compartida no predeterminada en GCC Linux? Obteniendo “error al cargar bibliotecas compartidas” cuando se ejecuta

Hay una computadora portátil en la que no tengo privilegios de root. en la máquina tengo una biblioteca instalada usando configure –prefix=$HOME/.usr . después de eso, obtuve estos archivos en ~/.usr/lib : libXX.so.16.0.0 libXX.so.16 libXX.so libXX.la libXX.a cuando compilo un progtwig que invoca una función proporcionada por la biblioteca con este comando: gcc XXX.c -o […]

¿Cuál es la diferencia entre -ruta y -L?

gcc y ld proporcionan muchas formas de especificar una ruta de búsqueda para las bibliotecas, entre ellas, las -rpath y -L . Las páginas de manual no revelan diferencias entre estos dos indicadores, diciendo efectivamente que cada indicador agrega una biblioteca a la ruta de búsqueda de la biblioteca. Sin embargo, parece extraño que ambas […]

Vinculación con versiones anteriores de símbolos en un archivo .so

Usando gcc y ld en x86_64 linux necesito vincularme con una versión más nueva de una biblioteca (glibc 2.14) pero el ejecutable necesita ejecutarse en un sistema con una versión anterior (2.5). Dado que el único símbolo incompatible es memcpy (que necesita memcpy@GLIBC_2.2.5 pero la biblioteca proporciona memcpy@GLIBC_2.14), me gustaría decirle al vinculador que, en […]

variables globales compartidas en C

¿Cómo puedo crear variables globales que se comparten en C? Si lo pongo en un archivo de encabezado, el enlazador se queja de que las variables ya están definidas. ¿Es la única manera de declarar la variable en uno de mis archivos C y poner extern en forma manual en la parte superior de todos […]

¿El enlazador de GCC no puede encontrar la biblioteca estándar?

He estado desarrollando un proyecto escolar en XCode. El producto final debe enviarse en el código fuente con un archivo MAKE, así que escribí un archivo MAKE y comencé a comstackr de esa manera, para asegurarme de tener una copia de trabajo. Aquí está mi archivo MAKE: all: main.o StackList.o world.o Farm.o gcc main.o StackList.o […]

¿Cómo hacer que los enlaces débiles funcionen con GCC?

Parece haber 3 formas de decirle a GCC que vincule débilmente un símbolo: __attribute__((weak_import)) __attribute__((weak)) #pragma weak symbol_name Ninguno de estos funciona para mí: #pragma weak asdf extern void asdf(void) __attribute__((weak_import, weak)); … { if(asdf != NULL) asdf(); } Siempre obtengo un error de enlace como este: Símbolos indefinidos: “_asdf”, referenciado de: _asdf $ non_lazy_ptr […]