Comando Linux / Unix: ld

Compartir en facebook
Compartir en twitter
Compartir en linkedin
Compartir en telegram
Compartir en whatsapp
Compartir en email
Compartir en print
Comando Linux / Unix: ld

Comando Linux / Unix: ld

VALORACIÓN DEL ARTÍCULO:
5/5


NOMBRE

ld – Usando LD, el enlazador GNU

SINOPSIS

ld [ opciones ] objfile …..

DESCRIPCIÓN

ld combina un número de objetos y archivos, reubica sus datos y ata las referencias de los símbolos. Normalmente el último paso para compilar un programa es ejecutar ld .

ld acepta archivos del Lenguaje de Comandos Linker escritos en un superconjunto de la sintaxis del Lenguaje de Comandos del Editor de Enlaces de AT&T, para proporcionar un control explícito y total sobre el proceso de enlace.

Esta página man no describe el lenguaje de comandos; vea la entrada ld en «info», o el manual ld: el enlazador GNU, para más detalles sobre el lenguaje de comandos y otros aspectos del enlazador GNU.

Esta versión de ld utiliza las bibliotecas BFD de propósito general para operar en archivos de objetos. Esto permite ld leer, combinar y escribir archivos de objetos en muchos formatos diferentes—por ejemplo, COFF o «a.out». Se pueden enlazar diferentes formatos para producir cualquier tipo de archivo de objeto disponible.

Aparte de su flexibilidad, el enlazador GNU es más útil que otros enlazadores para proporcionar información de diagnóstico. Muchos enlazadores abandonan la ejecución inmediatamente al encontrar un error; siempre que es posible, ld continúa ejecutándose, permitiéndole identificar otros errores (o, en algunos casos, obtener un archivo de salida a pesar del error).

El enlazador GNU ld está pensado para cubrir una amplia gama de situaciones, y para ser lo más compatible posible con otros enlazadores. Como resultado, usted tiene muchas opciones para controlar su comportamiento.

OPCIONES

El enlazador soporta una plétora de opciones de línea de comandos, pero en la práctica, pocas de ellas se utilizan en un contexto particular. Por ejemplo, un uso frecuente de ld es enlazar archivos de objetos Unix estándar en un sistema Unix estándar compatible. En tal sistema, enlazar un archivo «hello.o»:

Esto le indica a ld que produzca un archivo llamado output como resultado de enlazar el archivo «/lib/crt0.o» con «hello.o» y la biblioteca «libc.a», que vendrá de los directorios de búsqueda estándar. (Vea la discusión de la opción -l abajo.)

Algunas de las opciones de la línea de comandos para ld se pueden especificar en cualquier punto de la línea de comandos. Sin embargo, las opciones que se refieren a archivos, como -l o -T , hacen que el archivo se lea en el punto en el que aparece la opción en la línea de comandos, en relación con los archivos objeto y otras opciones de archivo. La repetición de opciones que no son de archivo con un argumento diferente no tendrá ningún efecto adicional, o anulará las ocurrencias anteriores (las que se encuentran más a la izquierda en la línea de comandos) de esa opción. Las opciones que se pueden especificar de forma significativa más de una vez se indican en las descripciones siguientes.

Los argumentos que no son de opción son archivos de objetos o archivos que deben enlazarse entre sí. Pueden seguir, preceder o mezclarse con opciones de la línea de comandos, excepto que un argumento de archivo de objeto no se puede colocar entre una opción y su argumento.

Normalmente se invoca el enlazador con al menos un archivo de objeto, pero puede especificar otras formas de archivos de entrada binarios utilizando -l , -R , y el lenguaje de comandos de script. Si no se especifican archivos de entrada binarios, el enlazador no produce ninguna salida y emite el mensaje No hay archivos de entrada .

Si el enlazador no puede reconocer el formato de un archivo de objeto, asumirá que es un script enlazador. Un script especificado de esta manera aumenta el script principal del enlazador usado para el enlace (ya sea el script enlazador predeterminado o el especificado usando -T ). Esta característica permite al enlazador enlazar contra un archivo que parece ser un objeto o un archivo, pero que en realidad sólo define algunos valores de símbolo, o utiliza «INPUT» o «GROUP» para cargar otros objetos. Tenga en cuenta que especificar un script de esta manera simplemente aumenta el script principal del enlazador; utilice la opción -T para reemplazar el script enlazador predeterminado por completo.

Para las opciones cuyos nombres son una sola letra, los argumentos de opción deben seguir a la letra de opción sin espacios en blanco, o bien se deben dar como argumentos separados inmediatamente después de la opción que los requiere.

Para opciones cuyos nombres son múltiples letras, un guión o dos pueden preceder al nombre de la opción; por ejemplo, -trace-symbol y –trace-symbol son equivalentes. Nota – hay una excepción a esta regla. Las opciones de varias letras que empiezan con una «o» minúscula sólo pueden ir precedidas de dos guiones. Esto es para reducir la confusión con la opción -o . Por ejemplo -omagic establece el nombre del archivo de salida en magic mientras que –omagic establece el indicador NMAGIC en la salida.

Los argumentos de las opciones de varias letras deben estar separados del nombre de la opción por un signo de igual, o bien se deben dar como argumentos separados inmediatamente después de la opción que los requiere. Por ejemplo, –trace-symbol foo y –trace-symbol=foo son equivalentes. Se aceptan abreviaturas únicas de los nombres de las opciones de letras múltiples.

Si el enlazador está siendo invocado indirectamente, a través de un controlador de compilador (p.e. gcc ) entonces todas las opciones de la línea de comandos del enlazador deben ser precedidas por -Wl, (o lo que sea apropiado para el controlador de compilador en particular) de esta manera:

Esto es importante, porque de lo contrario el programa del controlador del compilador puede dejar caer silenciosamente las opciones del enlazador, resultando en un mal enlace.

Aquí hay una tabla de los modificadores genéricos de línea de comandos aceptados por el enlazador de GNU:

-a palabra clave

Esta opción es compatible con la compatibilidad HP/UX. El argumento keyword debe ser una de las cadenas del archivo comprimido , compartido , o por defecto . -un archivo es funcionalmente equivalente a -Bstatic , y las otras dos palabras clave son funcionalmente equivalentes a -Bdynamic . Esta opción puede ser utilizada cualquier número de veces.

-A arquitectura

–architecture= architecture

En la versión actual de ld , esta opción sólo es útil para la familia de arquitecturas Intel 960. En esa configuración ld , el argumento architecture identifica la arquitectura particular de la familia 960, permitiendo algunas salvaguardias y modificando la ruta de búsqueda de la biblioteca de archivos.

Las futuras versiones de ld pueden soportar funcionalidades similares para otras familias de arquitecturas.

-b formato de entrada

–format= input-format

ld puede configurarse para soportar más de un tipo de archivo de objeto. Si su ld está configurado de esta manera, puede utilizar la opción -b para especificar el formato binario de los archivos de objetos de entrada que siguen esta opción en la línea de comandos. Incluso cuando ld está configurado para soportar formatos de objeto alternativos, normalmente no necesita especificar esto, ya que ld debe configurarse para esperar como formato de entrada predeterminado el formato más habitual en cada equipo. input-format es una cadena de texto, el nombre de un formato particular soportado por las bibliotecas BFD. (Puede listar los formatos binarios disponibles con objdump -i …)

Puede que desee utilizar esta opción si está enlazando archivos con un formato binario inusual. También puede utilizar -b para cambiar de formato explícitamente (al enlazar archivos de objetos de diferentes formatos), incluyendo -b input-format antes de cada grupo de archivos de objetos en un formato particular.

El formato por defecto se toma de la variable de entorno «GNUTARGET».

También puede definir el formato de entrada desde un script, utilizando el comando «TARGET»;

-c Archivo de comando MRI

–mri-script= Archivo de comando MRI

Para compatibilidad con enlazadores producidos por MRI, ld acepta archivos de script escritos en un lenguaje de comandos restringido alternativo, descrito en la sección de archivos de script compatibles con MRI de la documentación de GNU ld. Introduzca los archivos de script MRI con la opción -c ; utilice la opción -T para ejecutar scripts de enlazador escritos en el lenguaje de script de propósito general ld . Si MRI-cmdfile no existe, ld lo busca en los directorios especificados por cualquier opción -L .

-d

-dc

-dp

Estas tres opciones son equivalentes; se admiten múltiples formularios para que sean compatibles con otros enlazadores. Asignan espacio a símbolos comunes incluso si se especifica un archivo de salida reubicable (con -r ). El comando «FORCE_COMMON_ALLOCATION» tiene el mismo efecto.

-e entry

–entry= entry

Utilice entry como símbolo explícito para iniciar la ejecución de su programa, en lugar del punto de entrada predeterminado. Si no hay un símbolo llamado entry, el enlazador intentará analizar entry como un número, y lo usará como dirección de entrada (el número será interpretado en base 10; puede usar un leading 0x para base 16, o un leading 0 para base 8).

-E

-exportación-dinámica

Al crear un ejecutable enlazado dinámicamente, añada todos los símbolos a la tabla de símbolos dinámicos. La tabla de símbolos dinámicos es el conjunto de símbolos que son visibles desde los objetos dinámicos en tiempo de ejecución.

Si no utiliza esta opción, la tabla de símbolos dinámicos normalmente contendrá sólo aquellos símbolos a los que hace referencia algún objeto dinámico mencionado en el enlace.

Si utiliza «dlopen» para cargar un objeto dinámico que necesita referirse a los símbolos definidos por el programa, en lugar de a algún otro objeto dinámico, entonces probablemente necesitará usar esta opción al enlazar el programa mismo.

También puede utilizar el script de la versión para controlar qué símbolos deben añadirse a la tabla de símbolos dinámica si el formato de salida lo soporta. Vea la descripción de –version-script en@ref{VERSION}.

-EB

Enlazar objetos de gran tamaño. Esto afecta al formato de salida predeterminado.

-EL

Enlaza objetos de Little-endian. Esto afecta al formato de salida predeterminado.

-f

–auxiliar nombre

Al crear un objeto compartido ELF, establezca el campo interno DT_AUXILIARY con el nombre especificado. Esto le indica al enlazador dinámico que la tabla de símbolos del objeto compartido debe utilizarse como un filtro auxiliar en la tabla de símbolos del objeto compartido name.

Si más tarde enlaza un programa con este objeto de filtro, cuando ejecute el programa, el enlazador dinámico verá el campo DT_AUXILIARY. Si el enlazador dinámico resuelve cualquier símbolo del objeto de filtro, primero comprobará si hay una definición en el objeto compartido name. Si existe, se utilizará en lugar de la definición del objeto de filtro. El objeto compartido name no necesita existir. Por lo tanto, el nombre del objeto compartido puede utilizarse para proporcionar una implementación alternativa de ciertas funciones, tal vez para la depuración o para el rendimiento específico de la máquina.

Esta opción se puede especificar más de una vez. Las entradas DT_AUXILIARY se crearán en el orden en que aparecen en la línea de comandos.

-F nombre

–filtro nombre

Al crear un objeto compartido ELF, establezca el campo interno DT_FILTER con el nombre especificado. Esto le indica al enlazador dinámico que la tabla de símbolos del objeto compartido que se está creando debe utilizarse como filtro en la tabla de símbolos de la directiva

Deja un comentario

TAMBIÉN TE INTERESA

avatares-para-los-clientes-de-un-supermercado

Las tiendas y las calles se podrían llenar de avatares inteligentes…

Empieza a sonar con fuerza el metaverso en numerosas industrias. El futuro de internet consistirá a base de plataformas o salas para interactuar, pero en lugar de nosotros serán los avatares que hayamos diseñado los que se desenvuelvan por este nuevo espacio virtual que dará un paso más con respecto a las redes sociales.  

anillo-Circular

Menos la hora, el anillo Circular ofrece todo lo que un buen smartwatch

El anillo Circular se suma a la tendencia imparable de los wearables en el mundo de la tecnología y la electrónica de consumo. Todo lo que ofrece, exceptuando la hora, puede asemejarse a las funciones de un buen smartwatch como el de Apple o cualquier otra pulsara de conocidas marcas del segmento.   Índice de

OnePlus-10-Pro

Un nuevo pura sangre de Android llegará en primavera: OnePlus 10 Pro

Apenas estamos saboreando al OnePlus 9 Pro y la marca anuncia su nuevo flagship: el OnePlus 10 Pro. Será el smartphone referente de una marca que poco a poco se está haciendo un hueco importante en el mercado europeo tras triunfar en China. Será en su país de origen donde se lance el dispositivo y

movil-plegable-honor-magic-v

Nuevo móvil plegable en el mercado: Honor Magic V

Si eres fan del móvil plegable, has de saber que el de Samsung no es el único que puede ocupar tu mente. El Honor Magic V acaba de salir del horno y promete hacerle mucha competencia a su rival surcoreano.   El Honor Magic V se presenta como el primer móvil plegable de la firma

hacker

Destapadas las cifras de fraude en el pasado Black Friday: ojo a España

Pasadas ya unas cuantas semanas del Black Friday, podemos sacar conclusiones sobre el fraude o los intentos de fraude que se han producido a nivel global y en España. Los datos que han salido a la luz sitúan a España como una gran diana por los hackers, ya que nuestro país supera ampliamente la media

OPPO-Air-Glass

Las OPPO Air Glass esperan ver la luz en el primer trimestre del año

Las OPPO Air Glass son las primeras gafas de realidad asistida de la marcha china que fueron presentadas durante la última parte del año 2021, en su llamado INNO Day. Su llegada definitiva al mercado se estima para esta primera parte del año 2022, aunque por el momento su comercialización solo se producirá en territorio