NOMBRE ld - Usando LD, el enlazador GNU SINOPSIS ld opciones objfile … DESCRIPCIÓN ld combina una serie de archivos de objetos y archivos, reubica sus datos y vincula las referencias de los símbolos. Por lo general, el último paso para compilar un programa es ejecutarld. ld acepta archivos de Linker Command Language escritos en un superconjunto de la sintaxis de Link Editor Command Language, para proporcionar un control explícito y total sobre el proceso de vinculación. Esta página de manual no describe el lenguaje de comando; ver elld entrada en "info", o el manual ld: el enlazador de GNU, para obtener detalles completos sobre el lenguaje de comando y sobre otros aspectos del enlazador de GNU. Esta version deld utiliza las bibliotecas BFD de propósito general para operar en archivos de objetos. Esto permiteld para leer, combinar y escribir archivos de objetos en muchos formatos diferentes, por ejemplo, COFF o "a.out". Se pueden vincular 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 después de encontrar un error; cuando sea posible,ld continúa ejecutándose, lo que le permite identificar otros errores (o, en algunos casos, obtener un archivo de salida a pesar del error). El enlazador GNUld está pensado para cubrir una amplia gama de situaciones y para ser lo más compatible posible con otros enlazadores. Como resultado, tienes muchas opciones para controlar su comportamiento. OPCIONES El enlazador admite una gran cantidad 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 deld es vincular archivos de objetos Unix estándar en un sistema Unix estándar y compatible. En tal sistema, para vincular un archivo "hello.o": Yo hago /lib/crt0.o hello.o -lcEsto le dice ald para producir un archivo llamado salida como resultado de vincular el archivo "/lib/crt0.o" con "hello.o" y la biblioteca "libc.a", que provendrá de los directorios de búsqueda estándar. (Ver la discusión de la-l opción a continuación.) Algunas de las opciones de línea de comandos parald Se puede especificar en cualquier punto de la línea de comando. Sin embargo, las opciones que se refieren a archivos, tales como-l o-T, hace 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 de objeto y otras opciones de archivo. La repetición de opciones que no sean 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 comando) de esa opción. Las opciones que pueden especificarse significativamente más de una vez se indican en las descripciones a continuación. Los argumentos que no son de opción son archivos de objeto o archivos que se deben vincular entre sí. Pueden seguir, preceder o mezclarse con las opciones de la línea de comando, excepto que un argumento de archivo de objeto no se puede colocar entre una opción y su argumento. Normalmente, el vinculador se invoca 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 del script. Si no Los archivos de entrada binarios están especificados, el enlazador no produce ningún resultado 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 de vinculador. Una secuencia de comandos especificada de esta manera aumenta la secuencia de comandos principal del vinculador utilizada para el enlace (ya sea la secuencia de comandos predeterminada del vinculador o la especificada utilizando-T). Esta característica permite que el vinculador se vincule con un archivo que parece ser un objeto o un archivo, pero en realidad simplemente define algunos valores de símbolos, o usa "ENTRADA" o "GRUPO" para cargar otros objetos. Tenga en cuenta que especificar una secuencia de comandos de esta manera simplemente aumenta la secuencia de comandos del vinculador principal; utilizar el-T Opción para reemplazar el script del enlazador predeterminado por completo. Para las opciones cuyos nombres son una sola letra, los argumentos de las opciones deben seguir la letra de la opción sin intervenir espacios en blanco, o deben presentarse como argumentos separados inmediatamente después de la opción que los requiere. Para las 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--tracia-simbolo son equivalentes Nota: hay una excepción a esta regla. Las opciones de varias letras que comienzan con una 'o' minúscula solo pueden ir precedidas por dos guiones. Esto es para reducir la confusión con el-o opción. Así por ejemplo-omágico establece el nombre del archivo de salida amágico mientras--magic establece el indicador NMAGIC en la salida. Los argumentos para las opciones de varias letras deben estar separados del nombre de la opción por un signo igual, o deben presentarse 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 opciones de múltiples letras. Nota: si el vinculador se invoca indirectamente, a través de un controlador de compilador (por ejemplo,gcc) entonces todas las opciones de línea de comando del enlazador deben tener el prefijo-Wl, (o lo que sea apropiado para el controlador del compilador en particular) de esta manera: gcc -Wl, - startgroup foo.o bar.o -Wl, - endgroupEsto es importante, porque de lo contrario, el programa del controlador del compilador puede descartar silenciosamente las opciones del enlazador, lo que resulta en un enlace defectuoso. Aquí hay una tabla de los conmutadores de línea de comando genéricos aceptados por el enlazador GNU: -una palabra clave Esta opción es compatible con la compatibilidad de HP / UX. los palabra clave El argumento debe ser una de las cuerdas.archivo, compartidoodefecto. -Aarchivo es funcionalmente equivalente a-Estático, y las otras dos palabras clave son funcionalmente equivalentes a-Bdynamic. Esta opción se puede utilizar cualquier número de veces. -UNA arquitectura --arquitectura = arquitectura En la versión actual deld, esta opción es útil solo para la familia de arquitecturas Intel 960. En esold configuración, la arquitectura El argumento identifica la arquitectura particular en la familia 960, habilitando algunas salvaguardas y modificando la ruta de búsqueda de la biblioteca de archivos. Futuros lanzamientos deld puede soportar funcionalidades similares para otras familias de arquitectura. -segundo formato de entrada --format = formato de entrada ld puede configurarse para admitir más de un tipo de archivo de objeto. Si tuld Se configura de esta manera, puede utilizar el-segundo Opción para especificar el formato binario para los archivos de objeto de entrada que siguen esta opción en la línea de comandos. Incluso cuandold está configurado para admitir formatos de objetos alternativos, normalmente no necesita especificar esto, ya queld debe configurarse para que espere como formato de entrada predeterminado el formato más habitual en cada máquina. formato de entrada es una cadena de texto, el nombre de un formato particular admitido por las bibliotecas BFD. (Puedes listar los formatos binarios disponibles conobjdump -i.) Es posible que desee utilizar esta opción si está vinculando archivos con un formato binario inusual. También puedes usar-segundo para cambiar los formatos explícitamente (al vincular archivos objeto de formatos diferentes), incluyendo-segundo formato de entrada antes de cada grupo de archivos de objeto en un formato particular. El formato predeterminado se toma de la variable de entorno "GNUTARGET". También puede definir el formato de entrada desde un script, usando el comando "TARGET"; -do MRI-archivo de comando --mri-script = MRI-archivo de comando Por compatibilidad con enlazadores producidos por resonancia magnética,ld acepta archivos de script escritos en un lenguaje de comando alternativo y restringido, descrito en la sección Archivos de script compatibles con MRI de la documentación de GNU ld. Presentar archivos de script de MRI con la opción-do; utilizar el-T Opción para ejecutar scripts de enlazador escritos en el propósito generalld Lenguaje de escritura. Si MRI-cmdfile no existe,ldLo busca en los directorios especificados por cualquier-L opciones -re -corriente continua -dp Estas tres opciones son equivalentes; Se admiten múltiples formularios para la compatibilidad con otros enlazadores. Asignan espacio a los símbolos comunes, incluso si se especifica un archivo de salida reubicable (con-r). El comando de script "FORCE_COMMON_ALLOCATION" tiene el mismo efecto. -mi entrada - entrada = entrada Utilizar entrada como el símbolo explícito para comenzar la ejecución de su programa, en lugar del punto de entrada predeterminado. Si no hay ningún símbolo llamado entrada , el enlazador intentará analizar entrada como un número, y use eso como la dirección de entrada (el número se interpretará en la base 10; puede usar una0x para la base 16, o un líder0 para la base 8). -MI --exportación-dinámica Al crear un ejecutable enlazado dinámicamente, agregue 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 objetos dinámicos en tiempo de ejecución. Si no usa esta opción, la tabla de símbolos dinámicos normalmente contendrá solo los símbolos a los que hace referencia algún objeto dinámico mencionado en el enlace. Si usa "dlopen" para cargar un objeto dinámico que necesita referirse a los símbolos definidos por el programa, en lugar de algún otro objeto dinámico, es probable que tenga que usar esta opción al vincular el programa. También puede usar el script de versión para controlar qué símbolos deben agregarse a la tabla de símbolos dinámicos si el formato de salida lo admite. Ver la descripción de--version-script en @ ref {VERSIÓN}. -EB Vincular objetos big-endian. Esto afecta el formato de salida predeterminado. -EL Vincular objetos little-endian. Esto afecta el formato de salida predeterminado. -F --auxiliar nombre Al crear un objeto compartido ELF, configure el campo interno DT_AUXILIARY con el nombre especificado. Esto le dice al enlazador dinámico que la tabla de símbolos del objeto compartido debe usarse como un filtro auxiliar en la tabla de símbolos del objeto compartido nombre . Si luego vincula un programa con este objeto de filtro, entonces, cuando ejecute el programa, el enlazador dinámico verá el campo DT_AUXILIARY. Si el enlazador dinámico resuelve algún símbolo del objeto de filtro, primero verificará si hay una definición en el objeto compartido nombre . Si hay uno, se usará en lugar de la definición en el objeto de filtro. El objeto compartido nombre no necesita existir Así el objeto compartido. nombre se puede usar 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 puede ser especificada más de una vez. Las entradas DT_AUXILIARY se crearán en el orden en que aparecen en la línea de comando. -F nombre --filtrar nombre Al crear un objeto compartido ELF, configure el campo interno DT_FILTER con el nombre especificado. Esto le dice al enlazador dinámico que la tabla de símbolos del objeto compartido que se está creando debe usarse como un filtro en la tabla de símbolos del objeto compartido nombre . Si luego vincula un programa con este objeto de filtro, entonces, cuando ejecute el programa, el enlazador dinámico verá el campo DT_FILTER. El enlazador dinámico resolverá los símbolos según la tabla de símbolos del objeto de filtro como de costumbre, pero en realidad enlazará con las definiciones encontradas en el objeto compartido. nombre . Por lo tanto, el objeto de filtro se puede utilizar para seleccionar un subconjunto de los símbolos proporcionados por el objeto nombre . Algunos enlazadores antiguos usaron el-F opción a través de una cadena de herramientas de compilación para especificar el formato de archivo de objeto para los archivos de objeto de entrada y salida. El enlazador GNU utiliza otros mecanismos para este propósito: el-segundo, --formato, --oformato opciones, el comando "OBJETIVO" en los scripts del vinculador y la variable de entorno "GNUTARGET". El enlazador GNU ignorará el-F Opción al no crear un objeto compartido ELF. -fini nombre Al crear un objeto ejecutable o compartido ELF, llame a NAME cuando se descargue el objeto ejecutable o compartido, estableciendo DT_FINI en la dirección de la función. Por defecto, el enlazador usa "_fini" como la función a la que se llama. -sol Ignorado Proporcionado para compatibilidad con otras herramientas. -SOL valor --gpsize = valor Establezca el tamaño máximo de objetos a optimizar usando el registro GP para tamaño . Esto solo es significativo para formatos de archivos de objetos como MIPS ECOFF, que permite colocar objetos grandes y pequeños en diferentes secciones. Esto se ignora para otros formatos de archivo de objeto. -h nombre -soname = nombre Al crear un objeto compartido ELF, configure el campo interno DT_SONAME con el nombre especificado. Cuando un ejecutable está vinculado con un objeto compartido que tiene un campo DT_SONAME, entonces cuando se ejecuta el ejecutable, el enlazador dinámico intentará cargar el objeto compartido especificado por el campo DT_SONAME en lugar de usar el nombre de archivo dado al enlazador. -yo Realizar un enlace incremental (igual que la opción-r). -en eso nombre Al crear un objeto ejecutable o compartido ELF, llame a NAME cuando se cargue el objeto ejecutable o compartido, estableciendo DT_INIT a la dirección de la función. Por defecto, el enlazador usa "_init" como la función a la que se llama. -l archivo --library = archivo Agregar archivo de archivo archivo A la lista de archivos a enlazar. Esta opción se puede utilizar cualquier número de veces.ld buscará en su lista de rutas las apariciones de "libarchive.a" para cada archivo especificado. En sistemas que soportan bibliotecas compartidas,ld también puede buscar bibliotecas con extensiones que no sean ".a". Específicamente, en los sistemas ELF y SunOS,ld buscará en un directorio una biblioteca con una extensión de ".so" antes de buscar una con una extensión de ".a". Por convención, una extensión ".so" indica una biblioteca compartida. El enlazador buscará un archivo solo una vez, en la ubicación donde se especifica en la línea de comando. Si el archivo define un símbolo que no estaba definido en algún objeto que apareció antes del archivo en la línea de comandos, el vinculador incluirá el archivo o archivos apropiados del archivo. Sin embargo, un símbolo indefinido en un objeto que aparece más adelante en la línea de comandos no hará que el enlazador busque nuevamente en el archivo. Ver el-( Opción para forzar al enlazador a buscar archivos varias veces. Puede listar el mismo archivo varias veces en la línea de comando. Este tipo de búsqueda de archivos es estándar para los enlazadores Unix. Sin embargo, si está utilizandold onAIX, tenga en cuenta que es diferente del comportamiento del enlazador AIX. -L searchdir --library-path = searchdir Agregar ruta searchdir a la lista de caminos queld buscará bibliotecas de archivos yld guiones de control. Puedes usar esta opción cualquier cantidad de veces. Los directorios se buscan en el orden en que se especifican en la línea de comandos. Los directorios especificados en la línea de comando se buscan antes que los directorios predeterminados. Todos-L las opciones se aplican a todos-l opciones, independientemente del orden en que aparezcan las opciones. Si searchdir comienza con "=", luego el "=" será reemplazado por el prefijo sysroot , una ruta especificada cuando el enlazador está configurado. El conjunto predeterminado de rutas buscadas (sin ser especificado con-L) depende de qué modo de emulaciónld está utilizando, y en algunos casos también sobre cómo se configuró. Las rutas también se pueden especificar en un script de enlace con el comando "SEARCH_DIR". Los directorios especificados de esta manera se buscan en el punto en el que aparece la secuencia de comandos del vinculador en la línea de comandos. -metro emulación Emular el emulación enlazador Puedes listar las emulaciones disponibles con el--verboso o-Vopciones Si el-metro La opción no se usa, la emulación se toma de la variable de entorno "LDEMULATION", si está definida. De lo contrario, la emulación predeterminada depende de cómo se configuró el enlazador. -METRO - mapa de impresión Imprimir un mapa de enlace a la salida estándar. Un mapa de enlaces proporciona información sobre el enlace, que incluye lo siguiente: * Donde los objetos objeto y los símbolos se asignan en la memoria. * Cómo se asignan los símbolos comunes. * Todos los miembros del archivo incluidos en el enlace, con una mención del símbolo que hizo que se introdujera el miembro del archivo. -norte --nagia Desactive la alineación de páginas de las secciones y marque la salida como "NMAGIC" si es posible. -NORTE --magic Configure las secciones de texto y datos para que puedan leerse y escribirse. Además, no alinee la página con el segmento de datos y desactive la vinculación contra bibliotecas compartidas. Si el formato de salida admite números mágicos de estilo Unix, marque la salida como "MÁGICA". --no-omágico Esta opción niega la mayoría de los efectos del-NORTE opción. Establece que la sección de texto sea de solo lectura y obliga al segmento de datos a alinearse con la página. Nota: esta opción no habilita la vinculación con bibliotecas compartidas. Utilizar-Bdynamic para esto. -o salida --output = salida Utilizar salida como el nombre del programa producido porld; Si no se especifica esta opción, el nombre a.out se utiliza por defecto. El comando de script "SALIDA" también puede especificar el nombre del archivo de salida. -O nivel Si nivel es un valor numérico mayor que cerold optimiza la salida. Esto puede llevar mucho más tiempo y, por lo tanto, probablemente solo debería habilitarse para el binario final. -q --emit-relocs Deje las secciones y los contenidos de reubicación en archivos ejecutables totalmente vinculados. Las herramientas de análisis y optimización de vínculos posteriores pueden necesitar esta información para realizar las modificaciones correctas de los ejecutables. Esto resulta en ejecutables más grandes. Esta opción actualmente solo es compatible con las plataformas ELF. -r --relocateable Genere una salida reubicable --- es decir, genere un archivo de salida que a su vez puede servir como entrada parald. Esto se llama a menudo vinculación parcial . Como efecto secundario, en entornos que admiten números mágicos de Unix estándar, esta opción también establece el número mágico del archivo de salida en "MÁGICO". Si no se especifica esta opción, se produce un archivo absoluto. Al enlazar programas de C ++, esta opción no lo hará resolver referencias a constructores; para hacer eso, usa-Ur. Cuando un archivo de entrada no tiene el mismo formato que el archivo de salida, la vinculación parcial solo se admite si ese archivo de entrada no contiene ninguna reubicación. Diferentes formatos de salida pueden tener más restricciones; por ejemplo, algunos formatos basados en "a.out" no admiten la vinculación parcial con archivos de entrada en otros formatos. Esta opción hace lo mismo que-yo. -R nombre del archivo --just-symbols = nombre del archivo Lea los nombres de los símbolos y sus direcciones de nombre del archivo , pero no lo reubique ni lo incluya en la salida. Esto permite que su archivo de salida se refiera simbólicamente a las ubicaciones absolutas de la memoria definidas en otros programas. Puedes usar esta opción más de una vez. Por compatibilidad con otros enlazadores ELF, si el-R La opción va seguida de un nombre de directorio, en lugar de un nombre de archivo, se trata como-rruta opción. -s - tira de todo Omita toda la información de símbolos del archivo de salida. -S --strip-debug Omita la información de símbolos del depurador (pero no todos los símbolos) del archivo de salida. -t --rastro Imprima los nombres de los archivos de entrada comold los procesa -T archivo de comandos --script = archivo de comandos Utilizar archivo de comandos como el script del enlazador. Este script reemplazaldEl script del enlazador predeterminado (en lugar de agregarlo), por lo que archivo de comando debe especificar todo lo necesario para describir el archivo de salida. Si archivo de comandos no existe en el directorio actual, "ld" lo busca en los directorios especificados por cualquier precedente-L opciones Múltiple-T las opciones se acumulan. -u símbolo --undefined = símbolo Fuerza símbolo para ser ingresado en el archivo de salida como un símbolo indefinido. Hacer esto puede, por ejemplo, desencadenar la vinculación de módulos adicionales desde bibliotecas estándar.-u puede repetirse con diferentes argumentos de opción para ingresar símbolos indefinidos adicionales. Esta opción es equivalente al comando de script de vinculador "EXTERN". -Ur Para cualquier otro programa que no sea C ++, esta opción es equivalente a-r: genera una salida reubicable --- es decir, un archivo de salida que a su vez puede servir como entrada parald. Al enlazar programas de C ++,-Ur hace resolver referencias a constructores, a diferencia de-r. No funciona para usar-Ur en archivos que estaban vinculados con ellos mismos-Ur; Una vez que la tabla del constructor se ha construido, no se puede agregar a. Utilizar-Ur solo para el último enlace parcial, y-r para los demás. --unique = SECCIÓN Crea una sección de salida separada para cada sección de entrada que coincida SECCIÓN , o si el comodín opcional SECCIÓN Falta un argumento para cada sección de entrada huérfana. Una sección huérfana es una que no se menciona específicamente en un script de vinculador. Puede usar esta opción varias veces en la línea de comando; Evita la fusión normal de las secciones de entrada con el mismo nombre, anulando las asignaciones de la sección de salida en un script de vinculador. -v --versión -V Mostrar el número de versión parald. los-V La opción también enumera las emulaciones soportadas. -X --descartar todo Eliminar todos los símbolos locales. -X --discard-locals Eliminar todos los símbolos locales temporales. Para la mayoría de los objetivos, esto es todos los símbolos locales cuyos nombres comienzan conL. -y símbolo --trace-symbol = símbolo Imprima el nombre de cada archivo vinculado en el que símbolo aparece Esta opción se puede dar cualquier número de veces. En muchos sistemas es necesario anteponer un guión bajo. Esta opción es útil cuando tiene un símbolo no definido en su enlace pero no sabe de dónde proviene la referencia. -Y camino Añadir camino a la ruta de búsqueda de la biblioteca por defecto. Esta opción existe para la compatibilidad de Solaris. -z palabra clave Las palabras clave reconocidas son "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" and "nocopyreloc ". Las otras palabras clave se ignoran para la compatibilidad de Solaris. "initfirst" marca el objeto que se inicializará primero en el tiempo de ejecución antes que cualquier otro objeto."interpose" marca el objeto que su tabla de símbolos interpone antes de todos los símbolos, pero el ejecutable principal. "loadfltr" marca el objeto que sus archivos se procesan inmediatamente en tiempo de ejecución. "nodefaultlib" marca el objeto que la búsqueda de dependencias de este objeto ignorará cualquier ruta de búsqueda de la biblioteca por defecto. "nodelete" marca que el objeto no debe descargarse en tiempo de ejecución. "nodlopen" marca el objeto no disponible para "dlopen". "nodump" marca el objeto que no se puede volcar con "dldump". "ahora" marca el objeto con el enlace de tiempo de ejecución no perezoso. "origen" marca que el objeto puede contener $ ORIGEN. "defs" no permite símbolos indefinidos. "muldefs" permite múltiples definiciones. "combreloc" combina varias secciones de reubicación y las ordena para hacer posible el almacenamiento dinámico de búsqueda de símbolos. "nocombreloc" deshabilita la combinación de varias secciones de relocalización. "Nocopyreloc" desactiva la producción de copias de copia. -( archivo -) --start-group archivo - grupo final los archivo debe ser una lista de archivos comprimidos. Pueden ser nombres de archivos explícitos, o-lopciones Los archivos especificados se buscan repetidamente hasta que no se crean nuevas referencias indefinidas. Normalmente, un archivo se busca solo una vez en el orden en que se especifica en la línea de comandos. Si se necesita un símbolo en ese archivo para resolver un símbolo indefinido al que hace referencia un objeto en un archivo que aparece más adelante en la línea de comando, el enlazador no podrá resolver esa referencia. Al agrupar los archivos, todos se pueden buscar repetidamente hasta que se resuelvan todas las referencias posibles. Usar esta opción tiene un costo de rendimiento significativo. Es mejor usarlo solo cuando hay referencias circulares inevitables entre dos o más archivos. --accept-unknown-input-arch --no-accept-unknown-input-arch Le dice al enlazador que acepte los archivos de entrada cuya arquitectura no puede ser reconocida. El supuesto es que el usuario sabe lo que está haciendo y deliberadamente desea vincular estos archivos de entrada desconocidos. Este fue el comportamiento predeterminado del enlazador, antes de la versión 2.14. El comportamiento predeterminado desde la versión 2.14 en adelante es rechazar dichos archivos de entrada, y así--accept-unknown-input-arch Se ha agregado la opción para restaurar el comportamiento anterior. -afirmar palabra clave Esta opción se ignora para la compatibilidad con SunOS. -Bdynamic -dy -call_shared Enlace contra bibliotecas dinámicas. Esto solo es significativo en plataformas para las que se admiten bibliotecas compartidas. Esta opción es normalmente la predeterminada en tales plataformas. Las diferentes variantes de esta opción son para compatibilidad con varios sistemas. Puede usar esta opción varias veces en la línea de comando: afecta a la búsqueda de la biblioteca-l Opciones que lo siguen. -Grupo Establezca el indicador "DF_1_GROUP" en la entrada "DT_FLAGS_1" en la sección dinámica. Esto hace que el vinculador de tiempo de ejecución maneje las búsquedas en este objeto y que sus dependencias se realicen solo dentro del grupo.--no-indefinido está implícito. Esta opción solo tiene sentido en las plataformas ELF que admiten bibliotecas compartidas. -Estático -dn -non_shared -estático No vincular contra bibliotecas compartidas. Esto solo es significativo en plataformas para las que se admiten bibliotecas compartidas. Las diferentes variantes de esta opción son para compatibilidad con varios sistemas. Puede usar esta opción varias veces en la línea de comando: afecta a la búsqueda de la biblioteca-l Opciones que lo siguen. -Bbbolbol Al crear una biblioteca compartida, vincule las referencias a los símbolos globales a la definición dentro de la biblioteca compartida, si corresponde. Normalmente, es posible que un programa vinculado a una biblioteca compartida anule la definición dentro de la biblioteca compartida. Esta opción solo tiene sentido en las plataformas ELF que admiten bibliotecas compartidas. --check-secciones --no-revisar-secciones Pregunta el enlazador no para verificar las direcciones de sección después de que se hayan asignado para ver si hay superposiciones. Normalmente, el enlazador realizará esta comprobación y, si encuentra alguna superposición, generará mensajes de error adecuados. El enlazador sí conoce y hace concesiones para las secciones en las superposiciones. El comportamiento predeterminado se puede restaurar utilizando el interruptor de línea de comandos--check-secciones. --cref Muestra una tabla de referencias cruzadas. Si se está generando un archivo de mapa enlazador, la tabla de referencia cruzada se imprime en el archivo de mapa. De lo contrario, se imprime en la salida estándar. El formato de la tabla es intencionalmente simple, por lo que puede procesarse fácilmente mediante un script si es necesario. Los símbolos se imprimen, ordenados por nombre. Para cada símbolo, se da una lista de nombres de archivos. Si se define el símbolo, el primer archivo listado es la ubicación de la definición. Los archivos restantes contienen referencias al símbolo. --no-define-común Esta opción inhibe la asignación de direcciones a símbolos comunes. El comando de script "INHIBIT_COMMON_ALLOCATION" tiene el mismo efecto. los--no-define-común la opción permite desacoplar la decisión de asignar direcciones a los símbolos comunes de la elección del tipo de archivo de salida; de lo contrario, un tipo de salida no Relocable obliga a asignar direcciones a símbolos comunes. Utilizando--no-define-común permite que los símbolos comunes a los que se hace referencia desde una biblioteca compartida se asignen direcciones solo en el programa principal. Esto elimina el espacio duplicado no utilizado en la biblioteca compartida y también evita cualquier posible confusión sobre la resolución del duplicado incorrecto cuando hay muchos módulos dinámicos con rutas de búsqueda especializadas para la resolución de símbolos en tiempo de ejecución. --defsym símbolo = expresión Cree un símbolo global en el archivo de salida, que contenga la dirección absoluta dada por expresión . Puede usar esta opción tantas veces como sea necesario para definir varios símbolos en la línea de comando. Una forma limitada de aritmética es compatible para el expresión en este contexto: puede dar una constante hexadecimal o el nombre de un símbolo existente, o usar "+" y "-" para sumar o restar constantes o símbolos hexadecimales. Si necesita expresiones más elaboradas, considere usar el lenguaje de comandos del enlazador desde un script. Nota: no debe haber espacios en blanco entre símbolo , el signo igual (``=''), y expresión . --demangle = estilo --no-demangle Estas opciones controlan si se deben desmarcar los nombres de los símbolos en los mensajes de error y otros resultados. Cuando se le dice al vinculador que se desmangle, trata de presentar los nombres de los símbolos de manera legible: elimina los guiones bajos si son utilizados por el formato de archivo objeto, y convierte los nombres de los símbolos modificados en C ++ en nombres legibles por el usuario. Diferentes compiladores tienen diferentes estilos de mutilación. El argumento de estilo de desmangling opcional se puede usar para elegir un estilo de desmangling apropiado para su compilador. El enlazador se desmarcará de forma predeterminada a menos que la variable de entornoCOLLECT_NO_DEMANGLE Está establecido. Estas opciones se pueden utilizar para anular el valor predeterminado. - enlazador dinámico expediente Establecer el nombre del enlazador dinámico. Esto solo es significativo cuando se generan ejecutables ELF enlazados dinámicamente. El enlazador dinámico predeterminado es normalmente correcto; No uses esto a menos que sepas lo que estás haciendo. --conocidos-relocs Esta opción solo tiene sentido cuando se vincula el código PIC incorporado MIPS, generado por la opción -membedded-pic al compilador y ensamblador GNU. Hace que el enlazador cree una tabla que se puede usar en tiempo de ejecución para reubicar los datos que se inicializaron estáticamente a valores de puntero. Ver el código en testsuite / ld-empic para más detalles. - advertencias fatales Trate todas las advertencias como errores. --fuerza-exe-sufijo Asegúrese de que un archivo de salida tenga un sufijo .exe. Si un archivo de salida totalmente vinculado con éxito no tiene un sufijo ".exe" o ".dll", esta opción obliga al enlazador a copiar el archivo de salida a uno del mismo nombre con un sufijo ".exe". Esta opción es útil cuando se usan archivos make de Unix no modificados en un host de Microsoft Windows, ya que algunas versiones de Windows no ejecutarán una imagen a menos que termine en un sufijo ".exe". --no-gc-secciones --gc-secciones Habilitar la recolección de basura de las secciones de entrada no utilizadas. Se ignora en los destinos que no admiten esta opción. Esta opción no es compatible con-r, tampoco debe ser utilizado con enlace dinámico. El comportamiento predeterminado (de no realizar esta recolección de basura) se puede restaurar especificando--no-gc-secciones en la linea de comando --ayuda Imprima un resumen de las opciones de línea de comandos en la salida estándar y salga. - objetivo-ayuda Imprima un resumen de todas las opciones específicas de destino en la salida estándar y salga. -Mapa archivo de mapas Imprima un mapa de enlace al archivo archivo de mapas . Vea la descripción del-METRO Opción, arriba. --no-mantener la memoria ld normalmente optimiza la velocidad sobre el uso de la memoria al almacenar en la memoria caché las tablas de símbolos de los archivos de entrada. Esta opción le dice ald para optimizar en cambio el uso de la memoria, releyendo las tablas de símbolos según sea necesario. Esto puede ser requerido sild se queda sin espacio de memoria mientras se vincula un ejecutable grande. --no-indefinido -z defs Normalmente, cuando se crea una biblioteca compartida no simbólica, los símbolos indefinidos están permitidos y dejados para ser resueltos por el cargador de tiempo de ejecución. Estas opciones no permiten tales símbolos indefinidos. --Permitir-definición múltiple -z muldefs Normalmente, cuando se define un símbolo varias veces, el vinculador notificará un error fatal. Estas opciones permiten múltiples definiciones y se utilizará la primera definición. --allow-shlib-undefined Permitir símbolos no definidos en objetos compartidos incluso cuando se establece --no-undefined. El resultado neto será que los símbolos no definidos en los objetos normales seguirán generando un error, pero los símbolos no definidos en los objetos compartidos serán ignorados. La implementación de no_undefined supone que el enlazador de tiempo de ejecución se ahogará con símbolos indefinidos. Sin embargo, hay al menos un sistema (BeOS) donde los símbolos no definidos en las bibliotecas compartidas son normales, ya que el kernel los revisa en el momento de la carga para seleccionar qué función es la más apropiada para la arquitectura actual. ES DECIR. Seleccionar dinámicamente una función memset apropiada. Aparentemente, también es normal que las bibliotecas compartidas de HPPA tengan símbolos indefinidos. --no-versión no definida Normalmente, cuando un símbolo tiene una versión no definida, el enlazador lo ignorará. Esta opción no permite símbolos con versión indefinida y en su lugar se emitirá un error fatal. --no-advertir-desajuste Normalmenteld dará un error si intenta vincular archivos de entrada que no coinciden por alguna razón, tal vez porque se han compilado para diferentes procesadores o diferentes endiannesses. Esta opción le dice ald que debería permitir silenciosamente tales posibles errores. Esta opción solo debe usarse con cuidado, en los casos en que haya realizado alguna acción especial que garantice que los errores del vinculador son inapropiados. --no-todo-archivo Apague el efecto de la- todo el archivo Opción para los siguientes archivos. --noinhibit-exec Conserve el archivo de salida ejecutable siempre que aún se pueda utilizar.Normalmente, el enlazador no producirá un archivo de salida si encuentra errores durante el proceso de enlace; sale sin escribir un archivo de salida cuando emite cualquier error. -nostdlib Solo busca en los directorios de la biblioteca explícitamente especificados en la línea de comando. Los directorios de biblioteca especificados en los scripts de vinculador (incluidos los scripts de vinculador especificados en la línea de comandos) se ignoran. --oformato formato de salida ld puede configurarse para admitir más de un tipo de archivo de objeto. Si tuld Se configura de esta manera, puede utilizar el--oformato Opción para especificar el formato binario para el archivo de objeto de salida. Incluso cuandold está configurado para admitir formatos de objetos alternativos, normalmente no necesita especificar esto, ya queld debe configurarse para producir como formato de salida predeterminado el formato más habitual en cada máquina. formato de salida es una cadena de texto, el nombre de un formato particular admitido por las bibliotecas BFD. (Puedes listar los formatos binarios disponibles conobjdump -i.) El comando de script "OUTPUT_FORMAT" también puede especificar el formato de salida, pero esta opción lo anula. -Qmagic Esta opción se ignora para la compatibilidad con Linux. -Qy Esta opción se ignora para la compatibilidad con SVR4. --relajarse Una opción con efectos dependientes de la máquina. Esta opción solo es compatible con algunos objetivos. En algunas plataformas, la--relajarse La opción realiza optimizaciones globales que son posibles cuando el vinculador resuelve el direccionamiento en el programa, como relajar los modos de dirección y sintetizar nuevas instrucciones en el archivo de objeto de salida. En algunas plataformas, estas optimizaciones globales de tiempo de enlace pueden hacer que la depuración simbólica del ejecutable resultante sea imposible. Se sabe que este es el caso de la familia de procesadores Matsushita MN10200 y MN10300. En plataformas donde esto no es compatible,--relajarse Se acepta, pero se ignora. --retain-symbols-file nombre del archivo Conservar solamente Los símbolos listados en el archivo. nombre del archivo , desechando todos los demás. nombre del archivo es simplemente un archivo plano, con un nombre de símbolo por línea. Esta opción es especialmente útil en entornos (como VxWorks) donde se acumula gradualmente una gran tabla global de símbolos para conservar la memoria en tiempo de ejecución. --retain-symbols-file hace no descarte los símbolos indefinidos, o los símbolos necesarios para las reubicaciones. Solo puedes especificar--retain-symbols-file Una vez en la línea de comando. Anula-s y-S. -rruta dir Agregue un directorio a la ruta de búsqueda de la biblioteca en tiempo de ejecución. Esto se utiliza cuando se vincula un ELFexecutable con objetos compartidos. Todos-rruta los argumentos se concatenan y se pasan al vinculador de tiempo de ejecución, que los utiliza para localizar objetos compartidos en tiempo de ejecución. los-rruta La opción también se usa al ubicar objetos compartidos que son necesarios para los objetos compartidos incluidos explícitamente en el enlace; ver la descripción de la-ruta-enlace opción. Si-rruta no se utiliza cuando se vincula un ejecutable ELF, se utilizará el contenido de la variable de entorno "LD_RUN_PATH" si está definido. los-rruta Opción también se puede utilizar en SunOS. De forma predeterminada, en SunOS, el vinculador formará un parche de búsqueda de tiempo de ejecución de todos los-L Opciones que se le da. Si un-rruta Se utiliza la opción, la ruta de búsqueda de tiempo de ejecución se formará exclusivamente utilizando el-rruta opciones, ignorando el-Lopciones Esto puede ser útil cuando se usa gcc, que agrega muchos-L Opciones que pueden estar en sistemas de archivos montados en NFS. Por compatibilidad con otros enlazadores ELF, si el-R La opción va seguida de un nombre de directorio, en lugar de un nombre de archivo, se trata como-rruta opción. -ruta-enlace DIR Cuando se usa ELF o SunOS, una biblioteca compartida puede requerir otra. Esto sucede cuando un enlace "ld -shared" incluye una biblioteca compartida como uno de los archivos de entrada. Cuando el enlazador se encuentra con una dependencia de este tipo cuando realiza un enlace no compartido y no reubicable, automáticamente intentará ubicar la biblioteca compartida requerida e incluirla en el enlace, si no está incluida explícitamente. En tal caso, el-ruta-enlace La opción especifica el primer conjunto de directorios para buscar. los-ruta-enlace La opción puede especificar una secuencia de nombres de directorio ya sea especificando una lista de nombres separados por dos puntos, o apareciendo varias veces. Esta opción debe usarse con precaución, ya que anula la ruta de búsqueda que puede haber sido compilada en una biblioteca compartida. En tal caso, es posible utilizar involuntariamente una ruta de búsqueda diferente a la que haría el enlazador de tiempo de ejecución. El enlazador utiliza las siguientes rutas de búsqueda para localizar las bibliotecas compartidas necesarias. 1. Cualquier directorio especificado por-ruta-enlace opciones 2. Cualquier directorio especificado por-rruta opciones La diferencia entre-rruta y-ruta-enlace es que los directorios especificados por-rruta las opciones se incluyen en el ejecutable y se usan en tiempo de ejecución, mientras que-ruta-enlace La opción solo es efectiva en el momento del enlace. Es solo para el enlazador nativo. 3. En un sistema ELF, si el-rruta y las opciones "rpath-link" no se utilizaron, busque el contenido de la variable de entorno "LD_RUN_PATH". Es solo para el enlazador nativo. 4. En SunOS, si el-rruta no se usó la opción, busque los directorios especificados usando-L opciones 5. Para un enlazador nativo, el contenido de la variable de entorno "LD_LIBRARY_PATH". 6. Para un enlazador ELF nativo, los directorios en "DT_RUNPATH" o "DT_RPATH" de una biblioteca compartida se buscan las bibliotecas compartidas que necesita.Las entradas "DT_RPATH" se ignoran si existen entradas "DT_RUNPATH". 7. Los directorios por defecto, normalmente / lib y / usr / lib . 8. Para un enlazador nativo en un sistema ELF, si el archivo /etc/ld.so.conf existe, la lista de directorios que se encuentran en ese archivo. Si no se encuentra la biblioteca compartida requerida, el vinculador emitirá una advertencia y continuará con el enlace. -compartido -Bargo Crear una biblioteca compartida. Actualmente solo se admite en las plataformas ELF, XCOFF y SunOS. En SunOS, el enlazador creará automáticamente una biblioteca compartida si el-mi La opción no se usa y hay símbolos indefinidos en el enlace. --sort-common Esta opción le dice ald para ordenar los símbolos comunes por tamaño cuando los coloca en las secciones de salida apropiadas. Primero vienen todos los símbolos de un byte, luego los dos bytes, luego los cuatro bytes y luego todo lo demás. Esto es para evitar espacios entre símbolos debido a restricciones de alineación. --split-by-file tamaño Similar a--split-by-reloc pero crea una nueva sección de salida para cada archivo de entrada cuando tamaño es alcanzado. tamaño por defecto a un tamaño de 1 si no se da. --split-by-reloc contar Intenta crear secciones adicionales en el archivo de salida para que ninguna sección de salida en el archivo contenga más de contar reubicaciones. Esto es útil cuando se generan enormes archivos reubicables para descargar en ciertos kernels en tiempo real con el formato de archivo objeto COFF; ya que COFF no puede representar más de 65535 reubicaciones en una sola sección. Tenga en cuenta que esto no funcionará con formatos de archivo de objeto que no admiten secciones arbitrarias. El enlazador no dividirá las secciones de entrada individuales para la redistribución, por lo que si una sola sección de entrada contiene más de contar reubicaciones una sección de salida contendrá tantas reubicaciones. contar por defecto a un valor de 32768. --estats Calcule y visualice estadísticas sobre el funcionamiento del enlazador, como el tiempo de ejecución y el uso de la memoria. --traditional-format Para algunos objetivos, la salida deld es diferente en algunos aspectos de la salida de algún enlazador existente. Este conmutador solicitald para utilizar el formato tradicional en su lugar. Por ejemplo, en SunOS,ld Combina entradas duplicadas en la tabla de cadenas de símbolos. Esto puede reducir el tamaño de un archivo de salida con información de depuración completa en más del 30 por ciento. Desafortunadamente, el programa "dbx" de SunOS no puede leer el programa resultante ("gdb" no tiene problemas). los--traditional-format interruptor le diceld Para no combinar entradas duplicadas. --sección-comienzo Nombre de la sección = org Localice una sección en el archivo de salida en la dirección absoluta dada por org . Puede usar esta opción tantas veces como sea necesario para localizar varias secciones en la línea de comandos. org debe ser un solo entero hexadecimal; Para la compatibilidad con otros enlazadores, puede omitir las principales0x Generalmente se asocia con valores hexadecimales. Nota: no debe haber espacios en blanco entre Nombre de la sección , el signo igual (``=''), y org . -Tbss org -Datos org -Texto org Utilizar org como la dirección de inicio para --- respectivamente --- el segmento "bss", "data" o "text" del archivo de salida. org debe ser un solo entero hexadecimal; Para la compatibilidad con otros enlazadores, puede omitir las principales0x Generalmente se asocia con valores hexadecimales. --dll-verbose --verboso Mostrar el número de versión parald y enumerar las emulaciones del enlazador soportadas. Muestra qué archivos de entrada pueden y no pueden abrirse. Muestra el script del enlazador que está utilizando el enlazador. --version-script = version-scriptfile Especifique el nombre de un script de versión para el vinculador. Esto se suele utilizar al crear bibliotecas compartidas para especificar información adicional sobre la jerarquía de versiones de la biblioteca que se está creando. Esta opción solo tiene sentido en las plataformas ELF que admiten bibliotecas compartidas. --warn-common Avisar cuando un símbolo común se combina con otro símbolo común o con una definición de símbolo. Los enlazadores Unix permiten esta práctica un tanto descuidada, pero los enlazadores en algunos otros sistemas operativos no lo hacen. Esta opción le permite encontrar problemas potenciales al combinar símbolos globales. Desafortunadamente, algunas bibliotecas de C utilizan esta práctica, por lo que puede recibir algunas advertencias sobre los símbolos en las bibliotecas así como en sus programas. Hay tres tipos de símbolos globales, ilustrados aquí con ejemplos en C: int i = 1; Una definición, que va en la sección de datos inicializados del archivo de salida. extern int i; Una referencia indefinida, que no asigna espacio. Debe haber una definición o un símbolo común para la variable en algún lugar. int i; Un símbolo común. Si solo hay (uno o más) símbolos comunes para una variable, se coloca en el área de datos sin inicializar del archivo de salida. El enlazador combina varios símbolos comunes para la misma variable en un solo símbolo. Si son de diferentes tamaños, elige el tamaño más grande. El enlazador convierte un símbolo común en una declaración, si existe una definición de la misma variable. los--warn-common La opción puede producir cinco tipos de advertencias. Cada advertencia consiste en un par de líneas: la primera describe el símbolo que se acaba de encontrar y la segunda describe el símbolo anterior encontrado con el mismo nombre. Uno o ambos de los dos símbolos serán un símbolo común. 1. Convertir un símbolo común en una referencia, porque ya existe una definición para el símbolo. (): advertencia: común de `anulado por definición (): advertencia: se define aquí2. Convertir un símbolo común en una referencia, porque se encuentra una definición posterior para el símbolo. Esto es lo mismo que en el caso anterior, excepto que los símbolos se encuentran en un orden diferente. (): advertencia: definición de `'anulando común (): advertencia: lo común está aquí3. Fusionar un símbolo común con un símbolo común anterior del mismo tamaño. (): advertencia: múltiplo de `' (): advertencia: anterior común está aquí4. Fusionar un símbolo común con un símbolo común más grande anterior. (): advertencia: común de `'anulado por mayor común (): advertencia: más común es aquí5. Fusionar un símbolo común con un símbolo común más pequeño anterior. Esto es lo mismo que en el caso anterior, excepto que los símbolos se encuentran en un orden diferente. (): advertencia: común de `'anulando más pequeño común (): advertencia: más común es aquí- constructores de guerra Avisar si se utilizan constructores globales. Esto solo es útil para unos pocos formatos de archivo de objeto. Para formatos como COFF o ELF, el enlazador no puede detectar el uso de constructores globales. --warn-multiple-gp Avisar si se requieren múltiples valores de puntero global en el archivo de salida. Esto solo es significativo para ciertos procesadores, como el Alpha. Específicamente, algunos procesadores colocan constantes de gran valor en una sección especial. Un registro especial (el puntero global) apunta al centro de esta sección, de modo que las constantes se pueden cargar de manera eficiente a través de un modo de direccionamiento relativo de registro base. Dado que el desplazamiento en el modo relativo de registro base es fijo y relativamente pequeño (por ejemplo, 16 bits), esto limita el tamaño máximo de la agrupación constante. Por lo tanto, en programas grandes, a menudo es necesario usar múltiples valores de punteros globales para poder abordar todas las constantes posibles. Esta opción hace que se emita una advertencia cada vez que se produce este caso. --warn-once Solo avisar una vez por cada símbolo indefinido, en lugar de una vez por módulo que se refiere a él. --warn-section-align Avisar si la dirección de una sección de salida se cambia debido a la alineación. Normalmente, la alineación se establecerá mediante una sección de entrada. La dirección solo se cambiará si no se especifica explícitamente; es decir, si el comando "SECCIONES" no especifica una dirección de inicio para la sección. - todo el archivo Para cada archivo mencionado en la línea de comando después de la- todo el archivo Como opción, incluya cada arch