Este es el comando sh4-linux-gnu-ld.bfd que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
ld - El enlazador GNU
SINOPSIS
viejo [opciones] archivoobj ...
DESCRIPCIÓN
ld combina una serie de objetos y archivos de almacenamiento, reubica sus datos y ata el símbolo
referencias. Por lo general, el último paso para compilar un programa es ejecutar ld.
ld acepta archivos Linker Command Language escritos en un superconjunto del Link Editor de AT&T
Sintaxis del lenguaje de comandos, para proporcionar un control explícito y total sobre el proceso de vinculación.
Esta página de manual no describe el lenguaje de comandos; ver el ld entrada en "información" para completar
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. Esta
permite ld para leer, combinar y escribir archivos de objetos en muchos formatos diferentes --- para
ejemplo, COFF o "a.out". Se pueden vincular diferentes formatos para producir cualquier
tipo de archivo 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, para obtener un archivo de salida a pesar del error).
El enlazador GNU ld está destinado a cubrir una amplia gama de situaciones y ser tan compatible
como sea posible con otros enlazadores. Como resultado, tiene muchas opciones para controlar su
comportamiento.
OPCIONES
El vinculador admite una gran cantidad de opciones de línea de comandos, pero en la práctica, pocas de ellas
se utilizan en cualquier contexto particular. Por ejemplo, un uso frecuente de ld es enlazar
archivos de objeto estándar de Unix en un sistema Unix estándar compatible. En tal sistema, para
vincular un archivo "hello.o":
Yo hago /lib/crt0.o hola.o -lc
Esto dice ld para producir un archivo llamado salida como resultado de vincular el archivo
"/lib/crt0.o" con "hello.o" y la biblioteca "libc.a", que vendrá del estándar
directorios de búsqueda. (Ver la discusión de la -l opción a continuación.)
Algunas de las opciones de la línea de comandos para ld se puede especificar en cualquier punto de la línea de comando.
Sin embargo, las opciones que se refieren a archivos, como -l or -T, hace que el archivo se lea en el
punto en el que aparece la opción en la línea de comando, en relación con los archivos de objeto y
otras opciones de archivo. La repetición de opciones que no son de archivo con un argumento diferente tendrá
ningún efecto adicional, o anular ocurrencias anteriores (las que están más a la izquierda en el comando
línea) de esa opción. Las opciones que pueden especificarse de manera significativa más de una vez son
anotado en las descripciones siguientes.
Los argumentos que no son de opción son archivos de objeto o archivos que deben vincularse entre sí. Ellos
puede seguir, preceder o mezclarse con las opciones de la línea de comandos, excepto que un archivo de objeto
El argumento no puede colocarse entre una opción y su argumento.
Por lo general, el vinculador se invoca con al menos un archivo de objeto, pero puede especificar otro
formas de archivos de entrada binaria usando -l, -Ry el lenguaje de comandos de la secuencia de comandos. Si no binario
se especifican los archivos de entrada, el enlazador no produce ninguna salida y emite el
mensaje No Las opciones de entrada archivos.
Si el vinculador no puede reconocer el formato de un archivo de objeto, asumirá que es un
secuencia de comandos del enlazador. Un script especificado de esta manera aumenta el script del enlazador principal utilizado para
el enlace (ya sea el script de creación de enlaces predeterminado o el especificado mediante -T). Esta
La función permite que el enlazador se vincule con un archivo que parece ser un objeto o un
archivo, pero en realidad simplemente define algunos valores de símbolo, o utiliza "ENTRADA" o "GRUPO" para
cargar otros objetos. Especificar un script de esta manera simplemente aumenta el enlazador principal
script, con los comandos adicionales colocados después del script principal; utilizar el -T opción para reemplazar
el script del enlazador predeterminado por completo, pero tenga en cuenta el efecto del comando "INSERT".
Para las opciones cuyos nombres son de una sola letra, los argumentos de las opciones deben seguir las
letra de opción sin espacios en blanco que intervengan, o se dará como argumentos separados
inmediatamente después de la opción que los requiera.
Para las opciones cuyos nombres son varias letras, un guión o dos pueden preceder al
nombre de la opción; por ejemplo, -símbolo-de-rastreo --traza-símbolo son equivalentes. Nota --- allí
es una excepción a esta regla. Varias opciones de letras que comienzan con una 'o' minúscula
solo puede ir precedido de dos guiones. Esto es para reducir la confusión con el -o opción. Entonces
por ejemplo -omágico establece el nombre del archivo de salida en magic mientras --omágico establece el NMAGIC
bandera en la salida.
Los argumentos para opciones de varias letras deben estar separados del nombre de la opción por un
signo igual, o ser dado como argumentos separados inmediatamente después de la opción que
los requiere. Por ejemplo, --traza-símbolo foo --trace-symbol = foo son equivalentes
Se aceptan abreviaturas únicas de los nombres de opciones de varias letras.
Nota --- si el enlazador se invoca indirectamente, a través de un controlador de compilador (p. Ej. gcc) entonces
todas las opciones de la línea de comandos del enlazador deben tener el prefijo -Wl, (o lo que sea apropiado
para el controlador del compilador en particular) como este:
gcc -Wl, - grupo de inicio foo.o bar.o -Wl, - grupo final
Esto es importante, porque de lo contrario, el programa del controlador del compilador puede eliminar silenciosamente
opciones del enlazador, lo que da como resultado un enlace incorrecto. También puede surgir confusión al pasar opciones
que requieren valores a través de un controlador, como el uso de un espacio entre la opción y el argumento
actúa como un separador y hace que el controlador pase solo la opción al enlazador y al
argumento para el compilador. En este caso, es más sencillo utilizar las formas unidas de ambos
opciones de una o varias letras, como:
gcc foo.o bar.o -Wl, -eENTRY -Wl, -Map = a.map
Aquí hay una tabla de los conmutadores genéricos de línea de comando aceptados por el enlazador GNU:
@presentar
Leer las opciones de la línea de comandos de presentar. Las opciones leídas se insertan en lugar del
originales @presentar opción. Si presentar no existe, o no se puede leer, entonces la opción
se tratará literalmente y no se eliminará.
Las opciones en presentar están separados por espacios en blanco. Se puede incluir un carácter de espacio en blanco
en una opción rodeando toda la opción entre comillas simples o dobles. Alguna
El carácter (incluida una barra invertida) se puede incluir anteponiendo el carácter que se
incluido con una barra invertida. los presentar puede contener en sí mismo @presentar opciones; alguna
dichas opciones se procesarán de forma recursiva.
-a keyword
Esta opción es compatible con la compatibilidad con HP / UX. los keyword El argumento debe ser uno de
las cuerdas Archivo, compartidoo tu préstamo estudiantil. -archivo es funcionalmente equivalente a
-Bestático, y las otras dos palabras clave son funcionalmente equivalentes a -Bdinámico. Esto
La opción se puede utilizar tantas veces como desee.
--auditoría AUDITLIB
Añade AUDITLIB a la entrada "DT_AUDIT" de la sección dinámica. AUDITLIB no está marcado
de existencia, ni utilizará el DT_SONAME especificado en la biblioteca. Si se especifica
varias veces "DT_AUDIT" contendrá una lista separada por dos puntos de interfaces de auditoría para
usar. Si el vinculador encuentra un objeto con una entrada de auditoría mientras busca compartido
bibliotecas, agregará una entrada "DT_DEPAUDIT" correspondiente en el archivo de salida. Esta
La opción solo es significativa en las plataformas ELF que admiten la interfaz rtld-audit.
-A arquitectura
--arquitectura =arquitectura
En la versión actual de ld, esta opción es útil solo para la familia de Intel 960 de
arquitecturas. En eso ld configuración, la arquitectura El argumento identifica el
arquitectura particular en la familia 960, permitiendo algunas salvaguardas y modificando el
ruta de búsqueda de biblioteca de archivo.
Versiones futuras de ld puede admitir una funcionalidad similar para otra arquitectura
las familias
-b formato de entrada
--format =formato de entrada
ld puede configurarse para admitir más de un tipo de archivo de objeto. Si tu ld is
configurado de esta manera, puede utilizar el -b opción para especificar el formato binario para la entrada
archivos de objeto que siguen esta opción en la línea de comando. Incluso cuando ld está configurado
para admitir formatos de objetos alternativos, normalmente no es necesario especificar esto, ya que ld
debe configurarse para esperar como formato de entrada predeterminado el formato más habitual en cada
maquina formato de entrada es una cadena de texto, el nombre de un formato particular admitido por
las bibliotecas BFD. (Puede enumerar los formatos binarios disponibles con volcado de objetos -i.)
Es posible que desee utilizar esta opción si está vinculando archivos con un binario inusual.
formato. También puedes usar -b para cambiar de formato explícitamente (al vincular archivos de objeto
de diferentes formatos), incluyendo -b 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 "OBJETIVO";
-c Archivo de comando de resonancia magnética
--mri-script =Archivo de comando de resonancia magnética
Para compatibilidad con enlazadores producidos por resonancia magnética, ld acepta archivos de script escritos en un
lenguaje de comandos alternativo y restringido, descrito en los archivos de secuencia de comandos compatibles con MRI
sección de la documentación GNU ld. Introduzca archivos de secuencia de comandos de MRI con la opción -c; utilizar
de la forma más -T opción para ejecutar scripts de enlazador escritos en el uso general ld scripting
idioma. Si archivo cmd de resonancia magnética no existe, ld lo busca en los directorios especificados
por cualquiera -L .
-d
-corriente continua
-dp Estas tres opciones son equivalentes; múltiples formas son compatibles para la compatibilidad
con otros enlazadores. Asignan espacio a símbolos comunes incluso si una salida reubicable
se especifica el archivo (con -r). El comando de secuencia de comandos "FORCE_COMMON_ALLOCATION" tiene la
mismo efecto.
--depauditar AUDITLIB
-P AUDITLIB
Añade AUDITLIB a la entrada "DT_DEPAUDIT" de la sección dinámica. AUDITLIB no es
comprobado su existencia, ni utilizará el DT_SONAME especificado en la biblioteca. Si
especificado varias veces "DT_DEPAUDIT" contendrá una lista de auditoría separada por dos puntos
interfaces a utilizar. Esta opción solo es significativa en las plataformas ELF que admiten el
interfaz rtld-audit. La opción -P se proporciona para compatibilidad con Solaris.
-e entrada
--entry =entrada
Usa entrada como el símbolo explícito para comenzar la ejecución de su programa, en lugar de
el punto de entrada predeterminado. Si no hay un símbolo nombrado entrada, el enlazador intentará
analizar gramaticalmente entrada como un número, y utilícelo como la dirección de entrada (el número será
interpretado en base 10; puede usar un líder 0x para base 16, o un líder 0 para base
8).
--excluir-libs lib,lib, ...
Especifica una lista de bibliotecas de archivos de las que los símbolos no deben ser automáticamente
exportado. Los nombres de las bibliotecas pueden estar delimitados por comas o dos puntos. Especificando
"--exclude-libs ALL" excluye los símbolos de todas las bibliotecas de archivos de la exportación automática.
Esta opción está disponible solo para el puerto de destino i386 PE del enlazador y para ELF
puertos objetivo. Para i386 PE, los símbolos enumerados explícitamente en un archivo .def siguen siendo
exportado, independientemente de esta opción. Para los puertos de destino ELF, los símbolos afectados por este
La opción se tratará como oculta.
--excluir-módulos-para-implib módulo,módulo, ...
Especifica una lista de archivos objeto o miembros del archivo, de los cuales no se deben extraer símbolos.
exportado automáticamente, pero que debe copiarse al por mayor en la biblioteca de importación
que se genera durante el enlace. Los nombres de los módulos pueden estar delimitados por comas o
dos puntos, y debe coincidir exactamente con los nombres de archivo utilizados por ld para abrir los archivos; para archivo
miembros, este es simplemente el nombre del miembro, pero para los archivos de objeto, el nombre
incluir y hacer coincidir con precisión cualquier ruta utilizada para especificar el archivo de entrada en el enlazador
línea de comando. Esta opción solo está disponible para el puerto de destino i386 PE del
enlazador. Los símbolos enumerados explícitamente en un archivo .def todavía se exportan, independientemente de
esta opción.
-E
--exportación dinámica
--sin-exportación-dinámica
Al crear un ejecutable vinculado dinámicamente, utilice el -E opción o el
--exportación dinámica La opción hace que el vinculador agregue todos los símbolos al símbolo dinámico.
mesa. La tabla de smbolos dinmicos es el conjunto de smbolos que son visibles desde dinmica
objetos en tiempo de ejecución.
Si no usa ninguna de estas opciones (o usa el --sin-exportación-dinámica opción de
restaurar el comportamiento predeterminado), la tabla de smbolos dinmicos normalmente contendr
aquellos 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 hacer referencia a los símbolos
definido por el programa, en lugar de algún otro objeto dinámico, entonces probablemente
necesita utilizar esta opción al vincular el programa en sí.
También puede utilizar la lista dinámica para controlar qué símbolos se deben agregar al
tabla de símbolos dinámicos si el formato de salida lo admite. Ver la descripción de
- lista-dinámica.
Tenga en cuenta que esta opción es específica para los puertos de destino ELF. Los objetivos de PE apoyan un
función para exportar todos los símbolos de una DLL o EXE; ver la descripción de
--exportar-todos-los-símbolos abajo.
-EB Vincula objetos big-endian. Esto afecta el formato de salida predeterminado.
-EL Vincula objetos little-endian. Esto afecta el formato de salida predeterminado.
-f nombre
--auxiliar =nombre
Al crear un objeto compartido ELF, establezca el campo interno DT_AUXILIARY en el
nombre especificado. Esto le dice al enlazador dinámico que la tabla de símbolos de los compartidos
El objeto debe utilizarse como filtro auxiliar en la tabla de símbolos del objeto compartido.
nombre .
Si luego vincula 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 verificará si hay un
definición en el objeto compartido nombre . Si hay uno, se utilizará en lugar del
definición en el objeto de filtro. El objeto compartido nombre no necesita existir. Por lo tanto, la
objeto compartido nombre puede utilizarse para proporcionar una implementación alternativa de ciertos
funciones, tal vez para depuración o para rendimiento específico de la máquina.
Esta opción se puede especificar más de una vez. Se crearán las entradas DT_AUXILIARY
en el orden en que aparecen en la línea de comando.
-F nombre
--filter =nombre
Al crear un objeto compartido ELF, establezca el campo DT_FILTER interno en el valor especificado
nombre. 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, cuando ejecute el
programa, el enlazador dinámico verá el campo DT_FILTER. El enlazador dinámico
resolver los símbolos de acuerdo con la tabla de símbolos del objeto de filtro como de costumbre, pero
en realidad se vinculará a las definiciones que se encuentran en el objeto compartido nombre . Por lo tanto, la
El objeto de filtro se puede utilizar para seleccionar un subconjunto de los símbolos proporcionados por el objeto.
nombre .
Algunos enlazadores más antiguos usaban el -F opción a lo largo de una cadena de herramientas de compilación para
especificar el formato de archivo de objeto para archivos de objeto de entrada y salida. El enlazador GNU
utiliza otros mecanismos para este fin: el -b, --formato, --oformato opciones, el
El comando "TARGET" en los scripts del enlazador y la variable de entorno "GNUTARGET". El GNU
enlazador ignorará el -F opción cuando no se crea un objeto compartido ELF.
-fini =nombre
Al crear un objeto ejecutable o compartido ELF, llame a NAME cuando el ejecutable o
El objeto compartido se descarga estableciendo DT_FINI en la dirección de la función. Por
por defecto, el enlazador usa "_fini" como la función para llamar.
-g Ignorado. Se proporciona para compatibilidad con otras herramientas.
-G propuesta de
--gpsize =propuesta de
Establezca el tamaño máximo de los objetos que se optimizarán utilizando el registro GP para tamaño. Esto
solo es significativo para formatos de archivo de objeto como MIPS ELF que admiten poner grandes
y pequeños objetos en diferentes secciones. Esto se ignora para otro archivo de objeto
formatos.
-h nombre
-soname =nombre
Al crear un objeto compartido ELF, establezca el campo DT_SONAME interno en el valor especificado
nombre. Cuando un ejecutable está vinculado con un objeto compartido que tiene un campo DT_SONAME,
luego, cuando se ejecute el ejecutable, el enlazador dinámico intentará cargar el archivo compartido
objeto especificado por el campo DT_SONAME en lugar de usar el nombre de archivo dado a
el enlazador.
-i Realizar un enlace incremental (igual que la opción -r).
-init =nombre
Al crear un objeto ejecutable o compartido ELF, llame a NAME cuando el ejecutable o
se carga el objeto compartido, estableciendo DT_INIT en la dirección de la función. Por
por defecto, el enlazador usa "_init" como la función para llamar.
-l especificación de nombre
--library =especificación de nombre
Agregue el archivo o el archivo de objeto especificado por especificación de nombre a la lista de archivos para vincular.
Esta opción se puede utilizar tantas veces como desee. Si especificación de nombre es de la forma :nombre del archivo, ld
buscará en la ruta de la biblioteca un archivo llamado nombre de archivo, de lo contrario buscará
ruta de biblioteca para un archivo llamado libnamespec.a.
En sistemas que admiten bibliotecas compartidas, ld también puede buscar archivos que no sean
libnamespec.a. Específicamente, en sistemas ELF y SunOS, ld buscará un directorio para
una biblioteca llamada libnamespec.so antes de buscar uno llamado libnamespec.a. (Por
convención, una extensión ".so" indica una biblioteca compartida.) Tenga en cuenta que este comportamiento
no aplica :nombre del archivo, que siempre especifica un archivo llamado nombre de archivo.
El vinculador 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 comando, el enlazador incluirá el
archivo (s) apropiado (s) del archivo. Sin embargo, un símbolo indefinido en un objeto
aparecer más tarde en la línea de comando no hará que el vinculador busque en el archivo
de nuevo.
Consulte las -( opción para forzar al vinculador a buscar archivos varias veces.
Puede enumerar el mismo archivo varias veces en la línea de comando.
Este tipo de búsqueda de archivos es estándar para enlazadores Unix. Sin embargo, si eres
usando ld en AIX, tenga en cuenta que es diferente del comportamiento del enlazador AIX.
-L directorio de búsqueda
--library-path =directorio de búsqueda
Agregar ruta directorio de búsqueda a la lista de caminos que ld buscará bibliotecas de archivos y
ld scripts de control. Puede utilizar esta opción tantas veces como desee. Los directorios son
buscados en el orden en que se especifican en la línea de comando. 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.
-L las opciones no afectan la forma en que ld busca una secuencia de comandos del vinculador a menos que -T opción es
especificado.
If directorio de búsqueda comienza con "=", entonces el "=" será reemplazado por el raíz del sistema prefijo,
controlado por el --sysroot opción, o se especifica cuando se configura el vinculador.
El conjunto predeterminado de rutas buscadas (sin especificarse con -L) depende de cual
modo de emulación ld 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 el script del enlazador
aparece en la línea de comando.
-m emulación
Emular el emulación enlazador. Puede enumerar las emulaciones disponibles con el
--verboso or -V .
Si -m no se utiliza la opción, la emulación se toma del "LDEMULATION"
variable de entorno, si está definida.
De lo contrario, la emulación predeterminada depende de cómo se configuró el vinculador.
-M
--imprimir-mapa
Imprima un mapa de vínculos a la salida estándar. Un mapa de enlaces proporciona información sobre el
enlace, que incluye lo siguiente:
· Dónde se asignan los archivos de objetos a 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 trajera el miembro del archivo.
· Los valores asignados a los símbolos.
Nota: los símbolos cuyos valores se calculan mediante una expresión que implica una
la referencia a un valor anterior del mismo símbolo puede no tener un resultado correcto
que se muestra en el mapa de enlaces. Esto se debe a que el enlazador descarta el intermedio
resultados y solo retiene el valor final de una expresión. Bajo tal
circunstancias, el vinculador mostrará el valor final entre corchetes.
Así, por ejemplo, un script de enlazador que contiene:
fo = 1
fo = fo * 4
foo = foo + 8
producirá la siguiente salida en el mapa de enlaces si el -M se utiliza la opción:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
See Expresiones para obtener más información sobre las expresiones en los scripts del enlazador.
-n
--nmagia
Desactive la alineación de páginas de las secciones y desactive la vinculación con bibliotecas compartidas. Si
el formato de salida admite números mágicos de estilo Unix, marque la salida como "NMAGIC".
-N
--omágico
Configure las secciones de texto y datos para que se puedan leer y escribir. Además, no alinee la página
el segmento de datos y deshabilite la vinculación con bibliotecas compartidas. Si el formato de salida
admite números mágicos de estilo Unix, marque la salida como "OMAGIC". Nota: aunque un
La sección de texto que se puede escribir está permitida para los objetivos PE-COFF, no se ajusta a la
especificación de formato publicada por Microsoft.
--noomágico
Esta opción niega la mayoría de los efectos de la -N opción. Establece la sección de texto en
ser de solo lectura y obliga al segmento de datos a alinearse con la página. Nota: esta opción no
no habilitar la vinculación con bibliotecas compartidas. Usar -Bdinámico para esto.
-o salida
--salida =salida
Usa salida como el nombre del programa producido por ld; si esta opcion no es
especificado, el nombre fuera se utiliza de forma predeterminada. El comando de secuencia de comandos "SALIDA" también puede
especifique el nombre del archivo de salida.
-O nivel
If nivel es un valor numérico mayor que cero ld optimiza la salida. Esto podría
tomar mucho más tiempo y, por lo tanto, probablemente solo debería habilitarse para la
binario. Por el momento, esta opción solo afecta a la generación de bibliotecas compartidas ELF. Futuro
las versiones del enlazador pueden hacer un mayor uso de esta opción. Además, actualmente no hay
diferencia en el comportamiento del enlazador para diferentes valores distintos de cero de esta opción.
Nuevamente, esto puede cambiar con versiones futuras.
- estado de empuje
El proyecto - estado de empuje permite preservar el estado actual de las banderas que gobiernan el
manejo de archivos de entrada para que todos puedan ser restaurados con un correspondiente
--estado popular .
Las opciones que están cubiertas son: -Bdinámico, -Bestático, -dn, -dy, -llamada_compartida,
-no_compartido, -estático, -N, -n, --archivo completo, --no-archivo-completo, -r, -Ur,
--copiar-dt-entradas-necesarias, --no-copia-dt-entradas-necesarias, --según sea necesario, --no-según sea necesario,
-a.
Un objetivo para esta opción son las especificaciones para paquete-config. Cuando se usa con el
--libras opción todas las bibliotecas posiblemente necesarias se enumeran y luego posiblemente se vinculan con
todo el tiempo. Es mejor devolver algo de la siguiente manera:
-Wl, - push-state, - según sea necesario -libone -libtwo -Wl, - pop-state
Deshace el efecto de --push-state, restaura los valores anteriores de las banderas que gobiernan
manejo de archivos de entrada.
-q
--emitir-relocs
Deje las secciones y los contenidos de reubicación en ejecutables completamente vinculados. Enlace de publicación
Las herramientas de análisis y optimización pueden necesitar esta información para realizar correctamente
modificaciones de ejecutables. Esto da como resultado ejecutables más grandes.
Actualmente, esta opción solo se admite en plataformas ELF.
--force-dinámico
Fuerza el archivo de salida para que tenga secciones dinámicas. Esta opción es específica de VxWorks
objetivos.
-r
--relocalizable
Generar salida reubicable --- es decir, generar un archivo de salida que a su vez puede servir como
entrada a ld. A esto se le suele llamar parcialmente enlace. Como efecto secundario, en ambientes
que admiten números mágicos estándar de Unix, esta opción también establece el archivo de salida
número mágico a "OMAGIC". Si no se especifica esta opción, se crea un archivo absoluto.
producido. Al vincular programas C ++, esta opción will no resolver referencias a
constructores; para hacer eso, usa -Ur.
Cuando un archivo de entrada no tiene el mismo formato que el archivo de salida, el enlace parcial
solo se admite si ese archivo de entrada no contiene ninguna reubicación. Diferente
los 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 -i.
-R nombre de archivo
--justo-símbolos =nombre de archivo
Lea los nombres de los símbolos y sus direcciones de nombre de archivo, pero no lo reubique ni incluya
en la salida. Esto permite que su archivo de salida se refiera simbólicamente a valores absolutos.
ubicaciones de memoria definidas en otros programas. Puede utilizar esta opción más de
una vez.
Para compatibilidad con otros enlazadores ELF, si el -R La opción va seguida de un directorio.
nombre, en lugar de un nombre de archivo, se trata como el -rruta .
-s
--despojar-todo
Omita toda la información de símbolos del archivo de salida.
-S
--strip-depuración
Omita la información del símbolo del depurador (pero no todos los símbolos) del archivo de salida.
-t
--rastro
Imprima los nombres de los archivos de entrada como ld los procesa.
-T archivo de comandos
--script =archivo de comandos
Usa archivo de comandos como el script del enlazador. Este script reemplaza ldsecuencia de comandos del vinculador predeterminado
(en lugar de agregar más), entonces 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 -L opciones. Múltiple
-T las opciones se acumulan.
-dT archivo de comandos
--default-script =archivo de comandos
Usa archivo de comandos como el script de creación de enlaces predeterminado.
Esta opción es similar a la --guión opción excepto que el procesamiento del script es
retrasado hasta que se haya procesado el resto de la línea de comando. Esto permite
opciones colocadas después de la - script predeterminado opción en la línea de comando para afectar el
comportamiento de la secuencia de comandos del vinculador, que puede ser importante cuando la línea de comandos del vinculador
no puede ser controlado directamente por el usuario. (por ejemplo, porque la línea de comando está siendo
construido por otra herramienta, como gcc).
-u símbolo
--undefined =símbolo
FORCE símbolo para ser ingresado en el archivo de salida como un símbolo indefinido. Haciendo esto puede,
por ejemplo, desencadenar la vinculación de módulos adicionales de bibliotecas estándar. -u puede ser
repetido con diferentes argumentos de opción para ingresar símbolos indefinidos adicionales. Esta
La opción es equivalente al comando de secuencia de comandos del vinculador "EXTERN".
Si esta opción se utiliza para forzar la incorporación de módulos adicionales al enlace,
y si es un error que el símbolo permanezca indefinido, entonces la opción
--require-definido debe usarse en su lugar.
--require-defined =símbolo
Exigir que símbolo se define en el archivo de salida. Esta opción es la misma que la opción
--indefinido excepto que si símbolo no está definido en el archivo de salida, entonces el vinculador
emitirá un error y saldrá. El mismo efecto se puede lograr en un script de enlazador mediante
utilizando "EXTERN", "ASSERT" y "DEFINED" juntos. Esta opción se puede utilizar varias
veces para requerir símbolos adicionales.
-Ur Para cualquier otro programa que no sea C ++, esta opción es equivalente a -r: genera
salida reubicable --- es decir, un archivo de salida que a su vez puede servir como entrada para ld. Cuando el
vincular programas C ++, -Ur sí resolver referencias a constructores, a diferencia de -r. Lo hace
no funciona para usar -Ur en archivos que estaban vinculados con -Ur; una vez el
La tabla de constructor ha sido construida, no se puede agregar. Usar -Ur solo para el ultimo
enlace parcial, y -r para los demás.
--manipulación-de-huérfanos =MODO
Controle cómo se manejan las secciones huérfanas. Una sección huérfana es aquella que no
mencionado en una secuencia de comandos del enlazador.
MODO puede tener cualquiera de los siguientes valores:
"lugar"
Las secciones huérfanas se colocan en una sección de salida adecuada siguiendo la estrategia
descrita en Huérfano secciones. La opción --único también afecta la forma en que las secciones son
metido.
"descarte"
Todas las secciones huérfanas se descartan, colocándolas en el /DESCARTE/ .
"advertir"
El vinculador colocará la sección huérfana como "lugar" y también emitirá una advertencia.
"error"
El vinculador se cerrará con un error si se encuentra alguna sección huérfana.
El valor predeterminado si - manipulación de huérfanos no se da es "lugar".
--único [=SECCIÓN]
Crea una sección de salida separada para cada sección de entrada que coincida SECCIÓNo si el
comodín opcional SECCIÓN Falta un argumento para cada sección de entrada huérfana. Un
La sección huérfana es una que no se menciona específicamente en un script del enlazador. Puedes usar esto
opción varias veces en la línea de comando; Evita la fusión normal de entrada
secciones con el mismo nombre, anulando las asignaciones de la sección de salida en un script del enlazador.
-v
--versión
-V Muestra el número de versión de ld. -V La opción también enumera las emulaciones admitidas.
-x
--descartar todo
Elimine todos los símbolos locales.
-X
--discard-locales
Elimine todos los símbolos locales temporales. (Estos símbolos comienzan con local específico del sistema
prefijos de etiqueta, normalmente .L para sistemas ELF o L para sistemas tradicionales a.out.)
-y símbolo
--trace-symbol =símbolo
Imprima el nombre de cada archivo vinculado en el que símbolo aparece. Esta opción puede darse
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 indefinido en su enlace pero no sabe
de donde viene la referencia.
-Y camino
Añadir el archivo camino a la ruta de búsqueda de la biblioteca predeterminada. Esta opción existe para Solaris
compatibilidad.
-z keyword
Las palabras clave reconocidas son:
combreloc
Combina varias secciones de reloc y las ordena para realizar una búsqueda dinámica de símbolos
almacenamiento en caché posible.
defensas
No permite símbolos no definidos en archivos de objeto. Símbolos indefinidos en compartidos
las bibliotecas todavía están permitidas.
ejecutivo
Marca el objeto que requiere pila ejecutable.
global
Esta opción solo es significativa cuando se crea un objeto compartido. Hace que el
símbolos definidos por este objeto compartido disponibles para la resolución de símbolos de
bibliotecas cargadas posteriormente.
inicializar
Esta opción solo es significativa cuando se crea un objeto compartido. Marca el objeto
para que su inicialización en tiempo de ejecución ocurra antes de la inicialización en tiempo de ejecución de
cualquier otro objeto introducido en el proceso al mismo tiempo. Del mismo modo, el
La finalización en tiempo de ejecución del objeto se producirá después de la finalización en tiempo de ejecución de
cualquier otro objeto.
interponer
Marca el objeto que su tabla de símbolos interpone antes de todos los símbolos excepto el
ejecutable principal.
perezoso
Al generar una biblioteca ejecutable o compartida, márquela para indicar la dinámica
enlazador para diferir la resolución de la llamada a la función hasta el punto en que se llama a la función
(enlace diferido), en lugar de en el momento de la carga. El enlace diferido es el predeterminado.
cargar fltr
Marca el objeto para que sus filtros se procesen inmediatamente en tiempo de ejecución.
Muldefs
Permite múltiples definiciones.
nocombreloc
Desactiva la combinación de múltiples secciones de reloc.
nocopyreloc
Deshabilite las variables .dynbss generadas por el vinculador utilizadas en lugar de las variables definidas en
bibliotecas compartidas. Puede resultar en reubicaciones dinámicas de texto.
nodefaultlib
Marca el objeto que la búsqueda de dependencias de este objeto ignorará cualquier
rutas de búsqueda de bibliotecas predeterminadas.
Nodelete
Marca que el objeto no debe descargarse en tiempo de ejecución.
abrir la cabeza
Marca el objeto no disponible para "dlopen".
nódulo
Marca que el objeto no puede ser volcado por "dldump".
pilanoexecs
Marca el objeto como no requiriendo pila ejecutable.
texto
Trate DT_TEXTREL en el objeto compartido como un error.
sin texto
No trate DT_TEXTREL en el objeto compartido como un error.
texto off
No trate DT_TEXTREL en el objeto compartido como un error.
norelro
No cree un encabezado de segmento ELF "PT_GNU_RELRO" en el objeto.
now Al generar una biblioteca ejecutable o compartida, márquela para indicar la dinámica
enlazador para resolver todos los símbolos cuando se inicia el programa, o cuando se comparte
la biblioteca está vinculada al uso de dlopen, en lugar de diferir la resolución de la llamada a la función
hasta el punto en que se llama por primera vez a la función.
natural
Marca que el objeto puede contener $ ORIGIN.
relro
Cree un encabezado de segmento ELF "PT_GNU_RELRO" en el objeto.
max-page-size =propuesta de
Establezca el tamaño de página máximo de emulación en propuesta de.
common-page-size =propuesta de
Establezca el tamaño de página común de emulación en propuesta de.
tamaño de pila =propuesta de
Especifique un tamaño de pila para en un segmento ELF "PT_GNU_STACK". Especificar voluntad cero
anular cualquier creación de segmento "PT_GNU_STACK" de tamaño predeterminado que no sea cero.
bndplt
Genere siempre el prefijo BND en las entradas PLT. Compatible con Linux / x86_64.
sin datos-protegidos-externos
No trate el símbolo de datos protegidos como externo cuando cree una biblioteca compartida. Esta
La opción anula la configuración predeterminada del backend del vinculador. Se puede utilizar para solucionar incorrectamente
reubicaciones contra símbolos de datos protegidos generados por el compilador. Actualizaciones sobre
Los símbolos de datos protegidos por otro módulo no son visibles para los elementos compartidos resultantes.
Biblioteca. Compatible con i386 y x86-64.
call-nop = prefix-addr
call-nop = prefijo-nop
call-nop = sufijo-nop
call-nop = prefijo-byte
call-nop = sufijo-byte
Especifique el relleno "NOP" de 1 byte al transformar una llamada indirecta a local
función definida, foo, a través de su ranura GOT. call-nop = prefix-addr genera "0x67
llamar a foo ". call-nop = prefijo-nop genera "0x90 llamada foo". call-nop = sufijo-nop
genera "llamada foo 0x90". call-nop = prefijo-byte genera "byte llamar al foo ".
call-nop = sufijo-byte genera "llamar a foo byte". Compatible con i386 y x86_64.
Otras palabras clave se ignoran por compatibilidad con Solaris.
-( archivo -)
- grupo de inicio archivo - grupo final
El proyecto archivo debe ser una lista de archivos de almacenamiento. Pueden ser archivos explícitos
nombres, o -l .
Los archivos especificados se buscan repetidamente hasta que no se encuentran nuevas referencias indefinidas.
creado. Normalmente, un archivo se busca solo una vez en el orden en que se especifica
en la línea de comando. Si se necesita un símbolo en ese archivo para resolver un indefinido
símbolo al que hace referencia un objeto en un archivo que aparece más adelante en la línea de comando,
el vinculador no podría resolver esa referencia. Al agrupar los archivos,
todos se buscarán repetidamente hasta que se resuelvan todas las referencias posibles.
El uso de esta opción tiene un costo de rendimiento significativo. Es mejor usarlo solo cuando
existen inevitables referencias circulares entre dos o más archivos.
--aceptar-arco-de-entrada-desconocido
--no-aceptar-entrada-desconocida-arch
Le dice al vinculador que acepte archivos de entrada cuya arquitectura no se pueda reconocer. los
la suposición es que el usuario sabe lo que está haciendo y deliberadamente quiere vincular
en estos archivos de entrada desconocidos. Este era el comportamiento predeterminado del vinculador, antes
versión 2.14. El comportamiento predeterminado desde la versión 2.14 en adelante es rechazar dicha entrada
archivos, por lo que --aceptar-arco-de-entrada-desconocido se ha agregado la opción para restaurar el antiguo
comportamiento.
--según sea necesario
--no-según sea necesario
Esta opción afecta a las etiquetas ELF DT_NEEDED para las bibliotecas dinámicas mencionadas en el comando
línea después de la --según sea necesario opción. Normalmente, el vinculador agregará una etiqueta DT_NEEDED para
cada biblioteca dinámica mencionada en la línea de comandos, independientemente de si la biblioteca
es realmente necesario o no. --según sea necesario hace que una etiqueta DT_NEEDED solo se emita para
una biblioteca que at en la punto in de la forma más liga satisface un símbolo indefinido no débil
referencia de un archivo de objeto normal o, si la biblioteca no se encuentra en el DT_NEEDED
listas de otras bibliotecas necesarias, una referencia de símbolo indefinido no débil de otra
biblioteca dinámica necesaria. Archivos de objetos o bibliotecas que aparecen en la línea de comando después de
la biblioteca en cuestión no afecta si la biblioteca se considera necesaria. Este es
similar a las reglas para la extracción de archivos de objetos de archivos. --no-según sea necesario
restaura el comportamiento predeterminado.
--add-necesario
--no-agregar-necesario
Estas dos opciones han quedado obsoletas debido a la similitud de sus nombres con el
--según sea necesario --no-según sea necesario opciones. Han sido reemplazados por
--copiar-dt-entradas-necesarias --no-copia-dt-entradas-necesarias.
-afirmar keyword
Esta opción se ignora por compatibilidad con SunOS.
-Bdinámico
-dy
-llamada_compartida
Enlace contra bibliotecas dinámicas. Esto solo es significativo en plataformas para las que se compartió
las bibliotecas son compatibles. Esta opción suele ser la predeterminada en dichas plataformas. los
diferentes variantes de esta opción son para compatibilidad con varios sistemas. Puedes
use esta opción varias veces en la línea de comando: afecta la búsqueda de la biblioteca
-l opciones que lo siguen.
-Bgrupo
Establezca el indicador "DF_1_GROUP" en la entrada "DT_FLAGS_1" en la sección dinámica. Esta
hace que el enlazador en tiempo de ejecución maneje búsquedas en este objeto y sus dependencias sean
realizado solo dentro del grupo. --unresolved-symbols = report-all está implícito. Esta
La opción solo es significativa en las plataformas ELF que admiten bibliotecas compartidas.
-Bestático
-dn
-no_compartido
-estático
No se vincule con 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 utilizar esta opción varias veces en el
línea de comando: afecta la búsqueda de la biblioteca -l opciones que lo siguen. Esta
la opción también implica --unresolved-symbols = report-all. Esta opción se puede utilizar con
-compartido. Si lo hace, significa que se está creando una biblioteca compartida, pero que todos los
Las referencias externas de la biblioteca deben resolverse extrayendo entradas de estáticas.
bibliotecas
-Bsimbólico
Al crear una biblioteca compartida, vincule referencias a símbolos globales a la definición
dentro de la biblioteca compartida, si la hubiera. Normalmente, es posible que un programa vinculado
contra una biblioteca compartida para anular la definición dentro de la biblioteca compartida. Esta
La opción también se puede utilizar con la --exportación dinámica opción, al crear un puesto
ejecutable independiente, para vincular referencias a símbolos globales a la definición dentro
el ejecutable. Esta opción solo es significativa en las plataformas ELF que admiten el uso compartido
bibliotecas y ejecutables independientes de la posición.
-Funciones-bsimbólicas
Al crear una biblioteca compartida, vincule las referencias a los símbolos de funciones globales al
definición dentro de la biblioteca compartida, si la hubiera. Esta opción también se puede utilizar con el
--exportación dinámica opción, al crear un ejecutable independiente de la posición, para enlazar
referencias a símbolos de funciones globales a la definición dentro del ejecutable. Esta
La opción solo es significativa en las plataformas ELF que admiten bibliotecas compartidas y posiciones
ejecutables independientes.
- lista-dinámica =archivo-lista-dinámica
Especifique el nombre de un archivo de lista dinámica para el vinculador. Esto se usa normalmente cuando
crear bibliotecas compartidas para especificar una lista de símbolos globales cuyas referencias
no debe estar vinculado a la definición dentro de la biblioteca compartida, o crear
ejecutables vinculados dinámicamente para especificar una lista de símbolos que deben agregarse a
la tabla de símbolos en el ejecutable. Esta opción solo es significativa en las plataformas ELF
que admiten bibliotecas compartidas.
El formato de la lista dinámica es el mismo que el del nodo de versión sin alcance y nodo
nombre. Ver VERSION para obtener más información.
--datos-de-lista-dinámica
Incluya todos los símbolos de datos globales en la lista dinámica.
- lista-dinámica-cpp-nueva
Proporcione la lista dinámica incorporada para el operador C ++ new and delete. Es principalmente útil
para construir libstdc ++ compartido.
--dinámica-lista-cpp-typeinfo
Proporcione la lista dinámica incorporada para la identificación del tipo de tiempo de ejecución de C ++.
--comprobar-secciones
--no-check-secciones
Pregunta el enlazador no para comprobar las direcciones de sección después de haber sido asignadas para ver si
hay superposiciones. Normalmente, el enlazador realizará esta comprobación y, si encuentra
cualquier superposición producirá mensajes de error adecuados. El enlazador conoce y
hace concesiones para las secciones en superposiciones. El comportamiento predeterminado se puede restaurar
usando el interruptor de línea de comando --comprobar-secciones. La superposición de secciones no suele
comprobado para enlaces reubicables. Puede forzar la comprobación en ese caso utilizando el
--comprobar-secciones .
--copiar-dt-entradas-necesarias
--no-copia-dt-entradas-necesarias
Esta opción afecta el tratamiento de las bibliotecas dinámicas a las que se refieren las etiquetas DT_NEEDED
interior Bibliotecas dinámicas ELF mencionadas en la línea de comandos. Normalmente, el enlazador no
agregue una etiqueta DT_NEEDED al binario de salida para cada biblioteca mencionada en una etiqueta DT_NEEDED
en una biblioteca dinámica de entrada. Con --copiar-dt-entradas-necesarias especificado en el comando
línea, sin embargo, cualquier biblioteca dinámica que la siga tendrá sus entradas DT_NEEDED
adicional. El comportamiento predeterminado se puede restaurar con --no-copia-dt-entradas-necesarias.
Esta opción también tiene un efecto sobre la resolución de símbolos en bibliotecas dinámicas.
Con --copiar-dt-entradas-necesarias Las bibliotecas dinámicas mencionadas en la línea de comandos serán
buscado de forma recursiva, siguiendo sus etiquetas DT_NEEDED a otras bibliotecas, con el fin de
resolver los símbolos requeridos por el binario de salida. Sin embargo, con la configuración predeterminada
la búsqueda de las bibliotecas dinámicas que le siguen se detendrá con la biblioteca dinámica
sí mismo. No se atravesará ningún enlace DT_NEEDED para resolver símbolos.
--cref
Genere una tabla de referencia cruzada. Si se genera un archivo de mapa del vinculador, la cruz
La tabla de referencia se imprime en el archivo de mapa. De lo contrario, se imprime en el estándar
salida.
El formato de la tabla es intencionalmente simple, de modo que pueda ser fácilmente procesado por
un guión si es necesario. Los símbolos se imprimen ordenados por nombre. Para cada símbolo,
se proporciona una lista de nombres de archivos. Si el símbolo está definido, el primer archivo de la lista es el
ubicación de la definición. Si el símbolo se define como un valor común, entonces cualquier archivo
donde sucede esto aparece a continuación. Finalmente, cualquier archivo que haga referencia al símbolo se
listado.
--no-define-común
Esta opción inhibe la asignación de direcciones a símbolos comunes. La secuencia de comandos
El comando "INHIBIT_COMMON_ALLOCATION" tiene el mismo efecto.
El proyecto --no-define-común La opción permite desvincular la decisión de asignar direcciones a
Símbolos comunes de la elección del tipo de archivo de salida; de lo contrario, no reubicable
El tipo de salida fuerza la asignación de direcciones a símbolos comunes. Utilizando --no-define-común
permite asignar símbolos comunes a los que se hace referencia desde una biblioteca compartida
direcciones solo en el programa principal. Esto elimina el espacio duplicado no utilizado en el
biblioteca compartida, y también evita cualquier posible confusión sobre la resolución de un error
duplicar cuando hay muchos módulos dinámicos con rutas de búsqueda especializadas para
resolución de símbolo de 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 utilizar esta opción tantas veces como sea necesario para definir múltiples
símbolos en la línea de comando. Se admite una forma limitada de aritmética para
expresión en este contexto: puede dar una constante hexadecimal o el nombre de una
símbolo existente, o use "+" y "-" para sumar o restar constantes hexadecimales o
símbolos. Si necesita expresiones más elaboradas, considere usar el comando del vinculador
lenguaje de un guión. Nota: no debe haber espacios en blanco entre símbolo, el
signo de igual ("=") y expresión.
--demangle [=style]
--no-exigir
Estas opciones controlan si exigir nombres de símbolo en mensajes de error y otros
producción. Cuando se le dice al enlazador que demangle, intenta presentar los nombres de los símbolos en un
moda legible: elimina los guiones bajos iniciales si son utilizados por el archivo de objeto
formato y convierte los nombres de símbolos alterados de C ++ en nombres legibles por el usuario. Diferente
Los compiladores tienen diferentes estilos de alteración. El argumento de estilo de demanda opcional puede
ser utilizado para elegir un estilo de demanda apropiado para su compilador. El enlazador
demangle de forma predeterminada a menos que la variable de entorno COLECCIONAR_NO_DEMANGLE Está establecido. Estas
Las opciones se pueden usar para anular el predeterminado.
-Ipresentar
- enlazador-dinámico =presentar
Establezca el nombre del vinculador dinámico. Esto solo es significativo cuando se genera
ejecutables ELF vinculados dinámicamente. El enlazador dinámico predeterminado normalmente es correcto;
no use esto a menos que sepa lo que está haciendo.
--no-enlazador-dinámico
Al producir un archivo ejecutable, omita la solicitud de un enlazador dinámico que se utilizará en
tiempo de carga. Esto solo es significativo para los ejecutables ELF que contienen dinámicas
reubicaciones, y generalmente requiere un código de punto de entrada que sea capaz de procesar estos
reubicaciones.
- advertencias fatales
- advertencias no fatales
Trate todas las advertencias como errores. El comportamiento predeterminado se puede restaurar con la opción
- advertencias no fatales.
--force-exe-sufijo
Asegúrese de que un archivo de salida tenga un sufijo .exe.
Si un archivo de salida completamente vinculado construido con éxito no tiene un ".exe" o ".dll"
sufijo, esta opción obliga al vinculador a copiar el archivo de salida a uno del mismo nombre
con un sufijo ".exe". Esta opción es útil cuando se utilizan archivos MAKE Unix sin modificar en un
Host de Microsoft Windows, ya que algunas versiones de Windows no ejecutarán una imagen a menos que
termina en un sufijo ".exe".
--gc-secciones
--no-gc-secciones
Habilite la recolección de basura de las secciones de entrada no utilizadas. Se ignora en los objetivos que no
no es compatible con esta opción. El comportamiento predeterminado (de no realizar esta basura
colección) se puede restaurar especificando --no-gc-secciones en la línea de comando. Nota
que la recolección de basura para los objetivos de formato COFF y PE es compatible, pero la
Actualmente, la implementación se considera experimental.
--gc-secciones decide qué secciones de entrada se utilizan examinando símbolos y
reubicaciones. La sección que contiene el símbolo de entrada y todas las secciones que contienen
Los símbolos no definidos en la línea de comandos se mantendrán, al igual que las secciones que contienen
símbolos referenciados por objetos dinámicos. Tenga en cuenta que al crear bibliotecas compartidas,
El vinculador debe asumir que se hace referencia a cualquier símbolo visible. Una vez que este conjunto inicial de
secciones, el enlazador marca recursivamente como usada cualquier sección
referenciado por sus reubicaciones. Ver --entrada --indefinido.
Esta opción se puede configurar al hacer un enlace parcial (habilitado con la opción -r) En esto
caso de que la raíz de los símbolos guardados debe especificarse explícitamente por un --entrada or
--indefinido opción o mediante un comando "ENTRY" en el script del enlazador.
--print-gc-secciones
--no-imprimir-secciones-gc
Enumere todas las secciones eliminadas por la recolección de basura. El listado está impreso en stderr.
Esta opción solo es efectiva si la recolección de basura se ha habilitado a través del
--gc-secciones) opción. El comportamiento predeterminado (de no enumerar las secciones que se
eliminado) se puede restaurar especificando --no-imprimir-secciones-gc en la línea de comando.
- formato de salida de impresión
Imprima el nombre del formato de salida predeterminado (tal vez influenciado por otra línea de comando
opciones). Esta es la cadena que aparecería en una secuencia de comandos del vinculador "OUTPUT_FORMAT"
mando.
- uso de memoria de impresión
Imprima el tamaño usado, el tamaño total y el tamaño usado de las regiones de memoria creadas con el MEMORIA
mando. Esto es útil en objetivos incrustados para tener una vista rápida de la cantidad de
memoria. El formato de la salida tiene un título y una línea por región. Está
tanto legible por humanos como fácilmente analizable por herramientas. A continuación, se muestra un ejemplo de una salida:
Región de memoria Tamaño utilizado Tamaño de la región% de antigüedad utilizado
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
--ayuda
Imprima un resumen de las opciones de la línea de comandos en la salida estándar y salga.
--objetivo-ayuda
Imprima un resumen de todas las opciones específicas del objetivo en la salida estándar y salga.
-Mapa =archivo de mapa
Imprima un mapa de vínculos al archivo archivo de mapa. Ver la descripción del -M opción, arriba.
--no-guardar-memoria
ld normalmente optimiza la velocidad sobre el uso de la memoria almacenando en caché las tablas de símbolos de
archivos de entrada en la memoria. Esta opción dice ld en su lugar, optimizar para el uso de la memoria, por
releer las tablas de símbolos según sea necesario. Esto puede ser necesario si ld se queda sin
espacio de memoria al vincular un ejecutable grande.
--no indefinido
-z defensas
Informar referencias de símbolos no resueltas de archivos de objetos normales. Esto se hace incluso si
el vinculador está creando una biblioteca compartida no simbólica. El interruptor
- [no-] allow-shlib-undefined controla el comportamiento de los informes no resueltos
referencias encontradas en bibliotecas compartidas que se vinculan en.
--permitir-definición-múltiple
-z Muldefs
Normalmente, cuando un símbolo se define varias veces, el vinculador informará un error fatal
error. Estas opciones permiten múltiples definiciones y se utilizará la primera definición.
--permitir-shlib-undefined
--no-allow-shlib-indefinido
Permite o no permite símbolos no definidos en bibliotecas compartidas. Este interruptor es similar a
--no indefinido excepto que determina el comportamiento cuando los símbolos indefinidos son
en una biblioteca compartida en lugar de un archivo de objeto normal. No afecta la forma en que
Se manejan símbolos indefinidos en archivos de objetos regulares.
El comportamiento predeterminado es informar errores para cualquier símbolo indefinido referenciado en
bibliotecas compartidas si el enlazador se utiliza para crear un ejecutable, pero para permitir
ellos si el vinculador se está utilizando para crear una biblioteca compartida.
Las razones para permitir referencias de símbolos no definidas en bibliotecas compartidas especificadas en
el tiempo de enlace es que:
· Es posible que una biblioteca compartida especificada en el momento del enlace no sea la misma que
disponible en el momento de la carga, por lo que el símbolo podría resolverse en el momento de la carga.
· Hay algunos sistemas operativos, por ejemplo, BeOS y HPPA, donde los símbolos indefinidos en
las bibliotecas compartidas son normales.
El kernel de BeOS, por ejemplo, parchea las bibliotecas compartidas en el momento de la carga para seleccionar
la función que sea más apropiada para la arquitectura actual. Este es
se utiliza, por ejemplo, para seleccionar dinámicamente una función de memset apropiada.
--no-versión-indefinida
Normalmente, cuando un símbolo tiene una versión indefinida, el vinculador lo ignorará. Esta
La opción no permite los símbolos con una versión indefinida y se emitirá un error fatal
preferiblemente.
--por defecto-symver
Cree y utilice una versión de símbolo predeterminada (el soname) para los símbolos exportados no versionados.
- predeterminado-importado-symver
Cree y use una versión de símbolo predeterminada (el soname) para los símbolos importados no versionados.
--no-advertir-desajuste
Normalmente ld dará un error si intenta vincular juntos archivos de entrada que son
no coinciden por alguna razón, tal vez porque se han compilado para diferentes
procesadores o para diferentes endianitudes. Esta opción dice ld que debería
Permitir silenciosamente tales posibles errores. Esta opción solo debe usarse con cuidado, en
casos en los que ha realizado alguna acción especial que garantiza que los errores del enlazador sean
inadecuado.
--no-warn-search-discordancia
Normalmente ld dará una advertencia si encuentra una biblioteca incompatible durante una biblioteca
buscar. Esta opción silencia la advertencia.
--no-archivo-completo
Desactive el efecto del --archivo completo opción para archivos de almacenamiento posteriores.
--noinhibit-ejecutivo
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; eso
sale sin escribir un archivo de salida cuando emite cualquier error.
-nostdlib
Solo busque directorios de bibliotecas especificados explícitamente en la línea de comandos. Biblioteca
directorios especificados en los scripts del enlazador (incluidos los scripts del enlazador especificados en el
línea de comando) se ignoran.
--oformato =formato de salida
ld puede configurarse para admitir más de un tipo de archivo de objeto. Si tu ld is
configurado de esta manera, puede utilizar el --oformato opción para especificar el formato binario para
el archivo de objeto de salida. Incluso cuando ld está configurado para admitir objetos alternativos
formatos, normalmente no es necesario especificar esto, ya que ld debe configurarse para producir
como formato de salida predeterminado, el formato más habitual en cada máquina. formato de salida es un
cadena de texto, el nombre de un formato particular admitido por las bibliotecas BFD. (Usted puede
enumere los formatos binarios disponibles con volcado de objetos -i.) El comando de secuencia de comandos
"OUTPUT_FORMAT" también puede especificar el formato de salida, pero esta opción lo anula.
-tarta
--pic-ejecutable
Cree un ejecutable independiente de la posición. Esto actualmente solo es compatible con ELF
plataformas. Los ejecutables independientes de la posición son similares a las bibliotecas compartidas en que
son reubicados por el enlazador dinámico a la dirección virtual que el sistema operativo elige
ellos (que pueden variar entre invocaciones). Como ejecutables normales vinculados dinámicamente
pueden ejecutarse y los símbolos definidos en el ejecutable no pueden ser anulados por
bibliotecas compartidas.
-qmagia
Esta opción se ignora por compatibilidad con Linux.
-Qy Esta opción se ignora por compatibilidad con SVR4.
--relajarse
--no-relajarse
Una opción con efectos dependientes de la máquina. Esta opción solo es compatible con algunos
objetivos.
En algunas plataformas el --relajarse La opción realiza optimizaciones globales específicas del objetivo.
que se vuelven posibles cuando el enlazador resuelve el direccionamiento en el programa, como
relajando los modos de dirección, sintetizando nuevas instrucciones, seleccionando una versión más corta de
instrucciones actuales y combinación de valores constantes.
En algunas plataformas, estas optimizaciones globales de tiempo de enlace pueden hacer una depuración simbólica de
el ejecutable resultante imposible. Este es el caso de Matsushita.
Familia de procesadores MN10200 y MN10300.
En plataformas donde esto no es compatible, --relajarse se acepta, pero se ignora.
En plataformas donde --relajarse se acepta la opcion --no-relajarse se puede utilizar para deshabilitar
la característica.
--retain-symbols-file =nombre de archivo
Conservar only los símbolos enumerados en el archivo nombre de archivo, descartando todos los demás. nombre de 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 una gran tabla de símbolos globales es
acumulado gradualmente, para conservar la memoria en tiempo de ejecución.
--retain-símbolos-archivo sí no descartar los símbolos indefinidos, o los símbolos necesarios para
reubicaciones.
Solo puede especificar --retain-símbolos-archivo una vez en la línea de comando. Anula -s
-S.
-rpath =dir
Agregue un directorio a la ruta de búsqueda de la biblioteca en tiempo de ejecución. Esto se usa al vincular un ELF
ejecutable con objetos compartidos. Todos -rruta los argumentos se concatenan y pasan a
el vinculador en tiempo de ejecución, que los usa para localizar objetos compartidos en tiempo de ejecución. los -rruta
La opción también se utiliza al localizar objetos compartidos que son necesarios para los objetos compartidos.
incluido explícitamente en el enlace; ver la descripción del -rpath-enlace opción. Si
-rruta no se utiliza al vincular un ejecutable ELF, el contenido del entorno
La variable "LD_RUN_PATH" se utilizará si está definida.
El proyecto -rruta La opción también se puede utilizar en SunOS. De forma predeterminada, en SunOS, el vinculador
formar una ruta de búsqueda en tiempo de ejecución de todos los -L opciones que se le da. Si un -rruta opción
se utiliza, la ruta de búsqueda en tiempo de ejecución se formará exclusivamente utilizando el -rruta opciones,
ignorando el -L opciones. Esto puede ser útil cuando se usa gcc, que agrega muchos -L
opciones que pueden estar en sistemas de archivos montados en NFS.
Para compatibilidad con otros enlazadores ELF, si el -R La opción va seguida de un directorio.
nombre, en lugar de un nombre de archivo, se trata como el -rruta .
-rpath-link =dir
Al usar ELF o SunOS, una biblioteca compartida puede requerir otra. Esto sucede cuando un
El enlace "ld -shared" incluye una biblioteca compartida como uno de los archivos de entrada.
Cuando el vinculador encuentra tal dependencia al hacer un no compartido, no reubicable
enlace, intentará localizar automáticamente la biblioteca compartida requerida e incluirla
en el enlace, si no se incluye explícitamente. En tal caso, el -rpath-enlace opción
especifica el primer conjunto de directorios para buscar. los -rpath-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 tener
se ha compilado en una biblioteca compartida. En tal caso, es posible utilizar
involuntariamente una ruta de búsqueda diferente a la que haría el enlazador en tiempo de ejecución.
El vinculador utiliza las siguientes rutas de búsqueda para ubicar las bibliotecas compartidas necesarias:
1. Cualquier directorio especificado por -rpath-enlace .
2. Cualquier directorio especificado por -rruta opciones. La diferencia entre -rruta
-rpath-enlace es que los directorios especificados por -rruta las opciones están incluidas en el
ejecutable y utilizado en tiempo de ejecución, mientras que el -rpath-enlace la opción solo es efectiva
en el momento del enlace. buscando -rruta de esta manera solo es compatible con enlazadores nativos y
reticuladores que se han configurado con el --con-sysroot .
3. En un sistema ELF, para enlazadores nativos, si el -rruta -rpath-enlace las opciones eran
no utilizado, busque el contenido de la variable de entorno "LD_RUN_PATH".
4. En SunOS, si el -rruta no se utilizó la opción, busque en los directorios especificados
usando -L .
5. Para un vinculador nativo, busque el contenido de la variable de entorno
"LD_LIBRARY_PATH".
6. Para un vinculador ELF nativo, los directorios en "DT_RUNPATH" o "DT_RPATH" de un
biblioteca se buscan las bibliotecas compartidas que necesita. Las entradas "DT_RPATH" son
se ignora si existen entradas "DT_RUNPATH".
7. Los directorios predeterminados, normalmente / lib / Usr / lib.
8. Para un vinculador nativo en un sistema ELF, si el archivo /etc/ld.so.conf existe, la lista
de directorios encontrados en ese archivo.
Si no se encuentra la biblioteca compartida requerida, el vinculador emitirá una advertencia y
continúe con el enlace.
-compartido
-Bcompartible
Crea una biblioteca compartida. Esto actualmente solo es compatible con ELF, XCOFF y SunOS
plataformas. En SunOS, el vinculador creará automáticamente una biblioteca compartida si el -e
La opción no se utiliza y hay símbolos indefinidos en el enlace.
- ordenado común
--sort-common = ascendente
--sort-common = descendente
Esta opción dice ld para ordenar los símbolos comunes por alineación en ascendente o
orden descendente cuando los coloca en las secciones de salida apropiadas. El símbolo
Las alineaciones consideradas son de dieciséis bytes o más, ocho bytes, cuatro bytes, dos bytes y
un byte. Esto es para evitar espacios entre símbolos debido a restricciones de alineación. Si no
Se especifica el orden de clasificación, luego se asume el orden descendente.
--sort-section = nombre
Esta opción aplicará "SORT_BY_NAME" a todos los patrones de sección comodín en el vinculador.
guión.
--sort-section = alineación
Esta opción aplicará "SORT_BY_ALIGNMENT" a todos los patrones de sección comodín en el
secuencia de comandos del enlazador.
- dividido por archivo [=tamaño]
Similar a - dividido por reloc pero crea una nueva sección de salida para cada archivo de entrada cuando
tamaño sea alcanzado. tamaño el tamaño predeterminado es 1 si no se proporciona.
--split-by-reloc [=contar]
Intenta crear secciones adicionales en el archivo de salida para que ninguna sección de salida en
el archivo contiene más de contar reubicaciones. Esto es útil cuando se generan grandes
archivos reubicables para descargar en ciertos núcleos en tiempo real con el objeto COFF
formato de archivo; dado 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
admite secciones arbitrarias. El vinculador 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á esa cantidad de reubicaciones. contar por defecto a un valor de
32768.
- estadísticas
Calcular y mostrar estadísticas sobre el funcionamiento del enlazador, como la ejecución
tiempo y uso de memoria.
--sysroot =directorio
Usa directorio como la ubicación del sysroot, anulando el valor predeterminado de configure-time.
Esta opción solo es compatible con enlazadores que se configuraron usando --con-sysroot.
--formato-tradicional
Para algunos objetivos, la salida de ld es diferente en algunos aspectos de la salida de algunos
enlazador existente. Este cambio solicita ld para utilizar el formato tradicional en su lugar.
Por ejemplo, en SunOS, ld combina entradas duplicadas en la tabla de cadenas de símbolos. Esta
puede reducir el tamaño de un archivo de salida con información de depuración completa en más de 30
por ciento. Desafortunadamente, el programa SunOS "dbx" no puede leer el programa resultante.
("gdb" no tiene problemas). los --formato-tradicional interruptor dice ld no combinar
entradas duplicadas.
--section-start =Nombre de la sección=org
Busque una sección en el archivo de salida en la dirección absoluta dada por org. Puedes utilizar
esta opción tantas veces como sea necesario para ubicar múltiples secciones en el comando
la línea. org debe ser un solo entero hexadecimal; para compatibilidad con otros enlazadores,
puede omitir el líder 0x generalmente asociado con valores hexadecimales. Nota: there
no debe haber espacios en blanco entre Nombre de la sección, el signo igual ("=") y org.
-Tbss =org
-Tdata =org
-Ttext =org
Igual que --sección-inicio, con ".bss", ".data" o ".text" como Nombre de la sección.
-Ttext-segmento =org
Al crear un ejecutable ELF, establecerá la dirección del primer byte del texto
segmento.
-Segmento de trodatos =org
Al crear un objeto ejecutable o compartido ELF para un destino donde los datos de solo lectura
está en su propio segmento separado del texto ejecutable, establecerá la dirección de
el primer byte del segmento de datos de solo lectura.
-Tldata-segmento =org
Al crear un objeto ejecutable o compartido ELF para el modelo de memoria media x86-64,
establecerá la dirección del primer byte del segmento ldata.
--unresolved-symbols =Método
Determine cómo manejar los símbolos no resueltos. Hay cuatro valores posibles para
Método:
ignora todo
No informe ningún símbolo sin resolver.
informar-todo
Informe todos los símbolos sin resolver. Este es el predeterminado.
ignorar-en-archivos-objeto
Informar los símbolos no resueltos que se encuentran en bibliotecas compartidas, pero ignórelos
si provienen de archivos de objetos normales.
ignorar en bibliotecas compartidas
Informe los símbolos no resueltos que provienen de archivos de objetos normales, pero ignórelos si
proceden de bibliotecas compartidas. Esto puede resultar útil al crear una dinámica
binario y se sabe que todas las bibliotecas compartidas a las que debería hacer referencia
se incluyen en la línea de comandos del vinculador.
El comportamiento de las bibliotecas compartidas por sí mismas también puede ser controlado por el
- [no-] allow-shlib-undefined .
Normalmente, el vinculador generará un mensaje de error para cada símbolo no resuelto informado
pero la opcion --advertir-símbolos-no resueltos puede cambiar esto a una advertencia.
--dll-detallado
--verbose [=NÚMERO]
Muestra el número de versión de ld y enumere las emulaciones de enlazador admitidas. Monitor
qué archivos de entrada se pueden y no se pueden abrir. Mostrar la secuencia de comandos del vinculador que está utilizando
el enlazador. Si el opcional NÚMERO argumento> 1, el estado del símbolo del complemento también será
desplegado.
--version-script =versión-scriptfile
Especifique el nombre de un script de versión para el vinculador. Esto se usa normalmente cuando
crear bibliotecas compartidas para especificar información adicional sobre la versión
jerarquía de la biblioteca que se está creando. Esta opción solo es totalmente compatible con ELF
plataformas que admiten bibliotecas compartidas; ver VERSION. Se apoya parcialmente en
Plataformas PE, que pueden usar scripts de versión para filtrar la visibilidad de los símbolos en la exportación automática.
modo: cualquier símbolo marcado local en el script de la versión no se exportará.
- advertencia-común
Advertir cuando un símbolo común se combina con otro símbolo común o con un símbolo
definición. Los enlazadores Unix permiten esta práctica algo descuidada, pero los enlazadores en algunos
otros sistemas operativos no lo hacen. Esta opción le permite encontrar problemas potenciales
de combinar símbolos globales. Desafortunadamente, algunas bibliotecas de C usan esta práctica, por lo que
es posible que reciba algunas advertencias sobre símbolos en las bibliotecas, así como en sus programas.
Hay tres tipos de símbolos globales, ilustrados aquí con ejemplos de C:
int i = 1;
Una definición, que va en la sección de datos inicializados del archivo de salida.
externo int i;
Una referencia indefinida, que no asigna espacio. Debe haber un
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,
va en el área de datos no inicializados del archivo de salida. El enlazador se fusiona
múltiples símbolos comunes para la misma variable en un solo símbolo. Si ellos estan
de diferentes tamaños, elige el tamaño más grande. El enlazador se convierte en un símbolo común
en una declaración, si hay una definición de la misma variable.
El proyecto - advertencia-común La opción puede producir cinco tipos de advertencias. Cada advertencia consta de
un par de líneas: la primera describe el símbolo que acaba de encontrar, y la segunda
describe el símbolo anterior encontrado con el mismo nombre. Uno o ambos de los dos
los 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: definido aquí
2. Convertir un símbolo común en una referencia, porque una definición posterior del
se encuentra el símbolo. Este es el mismo que el caso anterior, excepto que el
los símbolos se encuentran en un orden diferente.
( ): advertencia: definición de ` '
primordial 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últiples comunes
de '
( ): advertencia: el común anterior está aquí
4. Fusionar un símbolo común con un símbolo común anterior más grande.
( ): advertencia: común de ` '
anulado por un común más grande
( ): advertencia: el común más grande está aquí
5. Fusionar un símbolo común con un símbolo común más pequeño anterior. Esto es lo mismo
como en el caso anterior, excepto que los símbolos se encuentran en un
orden.
( ): advertencia: común de ` '
anulando el común más pequeño
( ): advertencia: el común más pequeño está aquí
--advertir-constructores
Advertir si se utilizan constructores globales. Esto solo es útil para algunos archivos de objetos
formatos. Para formatos como COFF o ELF, el enlazador no puede detectar el uso de global
constructores.
--advertir-multiple-gp
Advierte si se requieren varios valores de puntero global en el archivo de salida. Esto es sólo
significativo para ciertos procesadores, como el Alpha. Específicamente, algunos procesadores
poner constantes de valores grandes en una sección especial. Un registro especial (el global
puntero) apunta a la mitad de esta sección, de modo que las constantes se pueden cargar
eficientemente a través de un modo de direccionamiento relativo de registro base. Dado que el desplazamiento en base-
El modo relativo de registro es fijo y relativamente pequeño (por ejemplo, 16 bits), esto limita la
tamaño máximo de la piscina constante. Por tanto, en programas grandes, a menudo es necesario
utilizar varios valores de puntero global para poder abordar todos los posibles
constantes. Esta opción hace que se emita una advertencia siempre que ocurra este caso.
- advertir una vez
Solo advertir una vez por cada símbolo indefinido, en lugar de una vez por módulo que se refiere a
él.
--advertir-sección-alinear
Advierte si la dirección de una sección de salida se cambia debido a la alineación. Típicamente,
la alineación será establecida por una sección de entrada. La dirección solo se cambiará si
no especificado explícitamente; es decir, si el comando "SECCIONES" no especifica un inicio
dirección de la sección.
--advertir-textrel-compartido
Advierte si el vinculador agrega un DT_TEXTREL a un objeto compartido.
- advertir-alternar-em
Advierte si un objeto tiene un código de máquina ELF alternativo.
--advertir-símbolos-no resueltos
Si el enlazador va a reportar un símbolo sin resolver (vea la opción
--símbolos-no resueltos) normalmente generará un error. Esta opción lo hace
generar una advertencia en su lugar.
--error-no resuelto-símbolos
Esto restaura el comportamiento predeterminado del vinculador de generar errores cuando informa
símbolos sin resolver.
--archivo completo
Para cada archivo mencionado en la línea de comando después de la --archivo completo opción,
incluir cada archivo de objeto en el archivo en el enlace, en lugar de buscar el
archivo para los archivos objeto requeridos. Esto se usa normalmente para convertir un archivo
en una biblioteca compartida, lo que obliga a que todos los objetos se incluyan en la biblioteca compartida resultante
Biblioteca. Esta opción se puede utilizar más de una vez.
Dos notas al usar esta opción de gcc: Primero, gcc no conoce esta opción,
entonces tienes que usar -Wl, -whole-archive. Segundo, no olvides usar
-Wl, -no-archivo-completo después de su lista de archivos, porque gcc agregará su propia lista
de archivos a su enlace y es posible que no desee que esta bandera los afecte también.
--wrap =símbolo
Utilice una función de envoltura para símbolo. Cualquier referencia indefinida a símbolo se resolverá
envolver_símbolo". Cualquier referencia indefinida a "__real_símbolo" será resuelto a
símbolo.
Esto se puede utilizar para proporcionar un contenedor para una función del sistema. La función de envoltura
debería llamarse "__wrap_símbolo". Si desea llamar a la función del sistema, debe
llamar "__real_símbolo".
Aquí hay un ejemplo trivial:
nulo *
__wrap_malloc (tamaño_t c)
{
printf ("malloc llamado con% zu \ n", c);
devuelve __real_malloc (c);
}
Si vincula otro código con este archivo usando --envoltura malloc, luego todas las llamadas a "malloc"
llamará a la función "__wrap_malloc" en su lugar. La llamada a "__real_malloc" en
"__wrap_malloc" llamará a la función "malloc" real.
Es posible que desee proporcionar una función "__real_malloc" también, de modo que los enlaces sin el
--envoltura la opción tendrá éxito. Si hace esto, no debe poner la definición de
"__real_malloc" en el mismo archivo que "__wrap_malloc"; si lo hace, el ensamblador puede
resuelva la llamada antes de que el enlazador tenga la oportunidad de ajustarla a "malloc".
--eh-marco-hdr
Solicite la creación de la sección ".eh_frame_hdr" y el encabezado del segmento ELF "PT_GNU_EH_FRAME".
--no-ld-genera-información-de-desenrollado
Solicitar la creación de ".eh_frame" desenrollar información para las secciones de código generado por el vinculador como
PLT. Esta opción está activada de forma predeterminada si se admite la información de desenrollado generada por el vinculador.
--habilitar-nuevas-etiquetas
--disable-nuevas-etiquetas
Este vinculador puede crear las nuevas etiquetas dinámicas en ELF. Pero los sistemas ELF más antiguos pueden no
entiéndelos. Si especifica --habilitar-nuevas-etiquetas, las nuevas etiquetas dinámicas serán
creado según sea necesario y se omitirán las etiquetas dinámicas más antiguas. Si especifica
--disable-nuevas-etiquetas, no se crearán nuevas etiquetas dinámicas. Por defecto, la nueva dinámica
las etiquetas no se crean. Tenga en cuenta que esas opciones solo están disponibles para sistemas ELF.
--hash-size =número
Establezca el tamaño predeterminado de las tablas hash del vinculador en un número primo cercano a número.
Aumentar este valor puede reducir el tiempo que tarda el enlazador en realizar su
tareas, a expensas de aumentar los requisitos de memoria del enlazador. similar
la reducción de este valor puede reducir los requisitos de memoria a expensas de la velocidad.
--hash-style =style
Establezca el tipo de tabla (s) hash del vinculador. style puede ser "sysv" para ELF clásico
sección ".hash", "gnu" para el nuevo estilo GNU sección ".gnu.hash" o "ambos" para ambos
tablas hash clásicas de ELF ".hash" y de nuevo estilo GNU ".gnu.hash". El valor predeterminado es "sysv".
--compress-debug-section = ninguno
--compress-debug-section = zlib
--compress-debug-section = zlib-gnu
--compress-debug-section = zlib-gabi
En las plataformas ELF, estas opciones controlan cómo se comprimen las secciones de depuración de DWARF usando
zlib. --compress-debug-section = ninguno no comprime las secciones de depuración DWARF.
--compress-debug-section = zlib-gnu comprime las secciones de depuración DWARF y cambia el nombre de depuración
nombres de las secciones para empezar .zdebug en lugar de .depurar. --compress-debug-section = zlib
--compress-debug-section = zlib-gabi comprimir secciones de depuración DWARF con
SHF_COMPRESSED del ELF ABI. El comportamiento predeterminado varía según el
objetivo involucrado y las opciones de configuración utilizadas para construir la cadena de herramientas. El valor por defecto
se puede determinar examinando la salida del enlazador --ayuda .
--reducir los gastos generales de memoria
Esta opción reduce los requisitos de memoria en tiempo de ejecución de ld, a expensas de vincular
velocidad. Esto se introdujo para seleccionar el antiguo algoritmo O (n ^ 2) para el archivo de mapa de enlaces
generación, en lugar del nuevo algoritmo O (n) que utiliza aproximadamente un 40% más de memoria para
almacenamiento de símbolos.
Otro efecto del cambio es establecer el tamaño predeterminado de la tabla hash en 1021, que
nuevamente ahorra memoria a costa de alargar el tiempo de ejecución del enlazador. Ésto no está hecho
sin embargo si el - tamaño hash se ha utilizado el interruptor.
El proyecto --reducir los gastos generales de memoria El interruptor también se puede utilizar para habilitar otras compensaciones en
futuras versiones del enlazador.
--construir-id
--build-id =style
Solicite la creación de una sección de notas ELF ".note.gnu.build-id" o un COFF ".buildid"
sección. El contenido de la nota son bits únicos que identifican este archivo vinculado.
style puede ser "uuid" para usar 128 bits aleatorios, "sha1" para usar un hash SHA160 de 1 bits en el
partes normativas del contenido de salida, "md5" para utilizar un hash MD128 de 5 bits en el
partes normativas del contenido de salida, o "0xcadena hexadecimal " usar una cadena de bits elegida
especificado como un número par de dígitos hexadecimales (caracteres "-" y ":" entre
los pares de dígitos se ignoran). Si style se omite, se utiliza "sha1".
Los estilos "md5" y "sha1" producen un identificador que siempre es el mismo en un
archivo de salida idéntico, pero será único entre todos los archivos de salida no idénticos. Está
no pretende ser comparado como una suma de verificación para el contenido del archivo. Un archivo vinculado puede
ser cambiado más tarde por otras herramientas, pero la cadena de bits de ID de compilación que identifica el original
El archivo vinculado no cambia.
Pasando "ninguno" por style desactiva la configuración de cualquier opción "--build-id" anterior
la línea de comando.
El enlazador i386 PE admite la -compartido opción, que hace que la salida sea una
biblioteca vinculada dinámicamente (DLL) en lugar de un ejecutable normal. Deberías nombrar el
salida "* .dll" cuando utiliza esta opción. Además, el enlazador es totalmente compatible con
archivos estándar "* .def", que se pueden especificar en la línea de comando del vinculador como un objeto
archivo (de hecho, debe preceder a los archivos de los que exporta símbolos, para asegurarse de que
vinculado, como un archivo de objeto normal).
Además de las opciones comunes a todos los objetivos, el enlazador i386 PE admite
opciones de línea de comandos que son específicas del destino i386 PE. Opciones que toman valores
pueden estar separados de sus valores por un espacio o un signo igual.
--add-stdcall-alias
Si se dan, los símbolos con un sufijo de llamada estándar (@nn) se exportarán tal cual y también con el
sufijo despojado. [Esta opción es específica del puerto de destino i386 PE del enlazador]
- archivo base presentar
Usa presentar como el nombre de un archivo en el que guardar las direcciones base de todos los
reubicaciones necesarias para generar DLL con herramienta dll. [Este es un i386 PE específico
opción]
--dll
Cree una DLL en lugar de un ejecutable normal. También puede utilizar -compartido o especificar un
"BIBLIOTECA" en un archivo ".def" dado. [Esta opción es específica para el i386 PE orientado
puerto del enlazador]
--enable-nombres-de-sección-largos
--disable-nombres-de-secciones-largas
Las variantes PE del formato de objeto COFF añaden una extensión que permite el uso de
nombres de sección de más de ocho caracteres, el límite normal para COFF. Por defecto,
Estos nombres solo se permiten en archivos de objetos, ya que las imágenes ejecutables totalmente vinculadas no
llevan la tabla de cadenas COFF necesaria para admitir los nombres más largos. Como extensión GNU,
también es posible permitir su uso en imágenes ejecutables, o (probablemente
¡inútilmente!) deshabilitarlo en archivos de objeto, utilizando estas dos opciones. Ejecutable
Las imágenes generadas con estos nombres de sección largos son ligeramente no estándar, y llevan como
hacen una tabla de cadenas y pueden generar una salida confusa cuando se examinan con no GNU
Herramientas compatibles con PE, como visores de archivos y volcadores. Sin embargo, GDB se basa en el uso de
PE nombres de sección largos para encontrar secciones de información de depuración de Dwarf-2 en un ejecutable
image en tiempo de ejecución, por lo que si no se especifica ninguna opción en la línea de comandos, ld will
habilitar nombres de sección largos, anulando el comportamiento predeterminado y técnicamente correcto,
cuando encuentra la presencia de información de depuración al vincular una imagen ejecutable y
sin quitar símbolos. [Esta opción es válida para todos los puertos de destino PE del enlazador]
--enable-stdcall-reparación
--disable-stdcall-fixup
Si el vínculo encuentra un símbolo que no puede resolver, intentará hacer "fuzzy
vinculación "buscando otro símbolo definido que difiera sólo en el formato de la
nombre del símbolo (cdecl vs stdcall) y resolverá ese símbolo vinculándolo a la coincidencia.
Por ejemplo, el símbolo indefinido "_foo" podría estar vinculado a la función "_foo @ 12", o
el símbolo indefinido "_bar @ 16" puede estar vinculado a la función "_bar". Cuando el
El enlazador hace esto, imprime una advertencia, ya que normalmente no debería haber podido enlazar,
pero a veces las bibliotecas de importación generadas a partir de dlls de terceros pueden necesitar esta función
para ser utilizable. Si especifica --enable-stdcall-reparación, esta función está completamente habilitada
y las advertencias no se imprimen. Si especifica --disable-stdcall-fixup, esta característica es
desactivado y esas discrepancias se consideran errores. [Esta opción es específica para
el puerto de destino i386 PE del enlazador]
- subrayado principal
- sin subrayado principal
Para la mayoría de los objetivos, el prefijo de símbolo predeterminado es un guión bajo y se define en el
descripción. Con esta opción es posible deshabilitar / habilitar el guión bajo predeterminado
símbolo-prefijo.
--exportar-todos-los-símbolos
Si se da, todos los símbolos globales en los objetos usados para construir una DLL serán exportados por
la DLL. Tenga en cuenta que este es el valor predeterminado si de lo contrario no se exportaría
símbolos. Cuando los símbolos se exportan explícitamente a través de archivos DEF o se exportan implícitamente
a través de atributos de función, el valor predeterminado es no exportar nada más a menos que esta opción
es dado. Tenga en cuenta que los símbolos "DllMain @ 12", "DllEntryPoint @ 0",
"DllMainCRTStartup @ 12" y "impure_ptr" no se exportarán automáticamente. También,
los símbolos importados de otras DLL no se volverán a exportar, ni los símbolos que especifiquen
El diseño interno de la DLL, como los que comienzan con "_head_" o terminan con
"_iname". Además, no hay símbolos de "libgcc", "libstd ++", "libmingw32" o
Se exportará "crtX.o". Símbolos cuyos nombres comienzan con "__rtti_" o "__builtin_"
no se exportará, para ayudar con las DLL de C ++. Finalmente, hay una extensa lista de
símbolos cygwin-private que no se exportan (obviamente, esto se aplica cuando se construye
DLL para objetivos cygwin). Estas exclusiones de cygwin son: "_cygwin_dll_entry @ 12",
"_cygwin_crt0_common @ 8", "_cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2",
"cygwin_premain3" y "environment". [Esta opción es específica para el i386 PE orientado
puerto del enlazador]
--excluir-símbolos símbolo,símbolo, ...
Especifica una lista de símbolos que no deben exportarse automáticamente. El símbolo
los nombres pueden estar delimitados por comas o dos puntos. [Esta opción es específica del i386 PE
puerto de destino del enlazador]
--excluir-todos-los-símbolos
Especifica que no se deben exportar símbolos automáticamente. [Esta opción es específica para
el puerto de destino i386 PE del enlazador]
- alineación de archivos
Especifique la alineación del archivo. Las secciones del archivo siempre comenzarán en las compensaciones del archivo.
que son múltiplos de este número. Este valor predeterminado es 512. [Esta opción es específica
al puerto de destino i386 PE del enlazador]
--montón reserva
--montón reserva,hacer
Especifique el número de bytes de memoria para reservar (y, opcionalmente, confirmar) para usar como
montón para este programa. El valor predeterminado es 1 MB reservado, 4K comprometido. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
--imagen-base propuesta de
Usa propuesta de como la dirección base de su programa o dll. Este es el recuerdo más bajo
ubicación que se utilizará cuando se cargue su programa o dll. Para reducir la necesidad de
reubicar y mejorar el rendimiento de sus dlls, cada uno debe tener una dirección base única
y no se superponga a ningún otro dll. El valor predeterminado es 0x400000 para ejecutables y
0x10000000 para dlls. [Esta opción es específica para el puerto de destino i386 PE del
enlazador]
- matanza
Si se dan, los sufijos de stdcall (@nn) se eliminarán de los símbolos antes de que sean
exportado. [Esta opción es específica del puerto de destino i386 PE del enlazador]
--consciente de direcciones grandes
Si se proporciona, se establece el bit apropiado en el campo "Características" del encabezado COFF.
para indicar que este ejecutable admite direcciones virtuales superiores a 2 gigabytes.
Esto debe usarse junto con / 3GB o / USERVA =propuesta de megabytes cambiar en
la sección "[sistemas operativos]" de BOOT.INI. De lo contrario, este bit no tiene ningún efecto.
[Esta opción es específica para los puertos de destino PE del enlazador]
--disable-large-address-awareness
Revierte el efecto de un anterior --consciente de direcciones grandes opción. Esto es útil si
--consciente de direcciones grandes siempre lo establece el controlador del compilador (por ejemplo, Cygwin gcc) y el
ejecutable no admite direcciones virtuales de más de 2 gigabytes. [Esta opción
es específico de los puertos de destino PE del enlazador]
--major-imagen-versión propuesta de
Establece el número principal de la "versión de la imagen". El valor predeterminado es 1. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
--major-versión-os propuesta de
Establece el número principal de la "versión del sistema operativo". El valor predeterminado es 4. [Esta opción es específica
al puerto de destino i386 PE del enlazador]
--principal-subsistema-versión propuesta de
Establece el número principal de la "versión del subsistema". El valor predeterminado es 4. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
- versión-de-imagen-menor propuesta de
Establece el número menor de la "versión de la imagen". El valor predeterminado es 0. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
- versión-os-menor propuesta de
Establece el número menor de la "versión del sistema operativo". El valor predeterminado es 0. [Esta opción es específica
al puerto de destino i386 PE del enlazador]
--versión-subsistema-menor propuesta de
Establece el número menor de la "versión del subsistema". El valor predeterminado es 0. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
--salida-def presentar
El vinculador creará el archivo presentar que contendrá un archivo DEF correspondiente a
la DLL que genera el enlazador. Este archivo DEF (que debería llamarse "* .def") puede
se puede utilizar para crear una biblioteca de importación con "dlltool" o se puede utilizar como referencia a
símbolos exportados de forma automática o implícita. [Esta opción es específica del i386 PE
puerto de destino del enlazador]
--out-imlib presentar
El vinculador creará el archivo presentar que contendrá una lib de importación correspondiente a
la DLL que genera el enlazador. Esta lib de importación (que debería llamarse "* .dll.a" o
"* .a" puede usarse para vincular clientes con la DLL generada; este comportamiento lo hace
es posible omitir un paso de creación de biblioteca de importación "dlltool" independiente. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
--habilitar-base-de-imagen-automática
--enable-auto-image-base =propuesta de
Elija automáticamente la base de la imagen para los archivos DLL, opcionalmente comenzando con la base propuesta de,
a menos que se especifique uno usando el argumento "--image-base". Utilizando un hash generado
del dllname para crear bases de imágenes únicas para cada DLL, colisiones en memoria y
Se evitan las reubicaciones que pueden retrasar la ejecución del programa. [Esta opción es específica
al puerto de destino i386 PE del enlazador]
--desactivar-base-de-imagen-automática
No genere automáticamente una base de imagen única. Si no hay un usuario especificado
image base ("--image-base") luego usa la plataforma predeterminada. [Esta opción es específica
al puerto de destino i386 PE del enlazador]
--dll-búsqueda-prefijo cadena
Al vincular dinámicamente a una dll sin una biblioteca de importación, busque
" .dll "en lugar de" lib .dll ". Este comportamiento permite
fácil distinción entre las DLL creadas para las distintas "subplataformas": nativa, cygwin,
uwin, pw, etc. Por ejemplo, las DLL de cygwin suelen utilizar "--dll-search-prefix = cyg".
[Esta opción es específica del puerto de destino i386 PE del enlazador]
--habilitar-importación automática
Realice una vinculación sofisticada de "_symbol" a "__imp__symbol" para las importaciones de DATOS desde archivos DLL,
y cree los símbolos thunking necesarios al construir las bibliotecas de importación con
esas exportaciones de DATOS. Nota: El uso de la extensión 'importación automática' hará que el texto
sección del archivo de imagen para que se pueda escribir. Esto no se ajusta al PE-COFF
especificación de formato publicada por Microsoft.
Nota: el uso de la extensión de 'importación automática' también provocará datos de solo lectura que
normalmente se coloca en la sección .rdata para colocarse en la sección .data
en lugar de. Esto es para solucionar un problema con consts que se describe
aquí: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
El uso de 'importación automática' generalmente 'simplemente funcionará', pero a veces puede ver esto
mensaje:
"variable" no se puede importar automáticamente. Lea la documentación de los ld
"--enable-auto-import" para obtener detalles. "
Este mensaje ocurre cuando alguna (sub) expresión accede a una dirección dada finalmente por
la suma de dos constantes (las tablas de importación de Win32 solo permiten una). Instancias donde esto
pueden ocurrir incluyen accesos a campos miembros de variables de estructura importadas desde una DLL,
además de utilizar un índice constante en una variable de matriz importada desde una DLL. Alguna
La variable de varias palabras (matrices, estructuras, long long, etc.) puede desencadenar esta condición de error.
Sin embargo, independientemente del tipo de datos exacto de la variable exportada infractora, ld
detectarlo siempre, emitir la advertencia y salir.
Hay varias formas de abordar esta dificultad, independientemente del tipo de datos del
variable exportada:
Una forma es utilizar el conmutador --enable-runtime-pseudo-reloc. Esto deja la tarea de
ajustar referencias en su código de cliente para el entorno de ejecución, por lo que este método funciona
solo cuando el entorno de ejecución admite esta función.
Una segunda solución es forzar a una de las 'constantes' a ser una variable, es decir,
desconocido y no optimizable en tiempo de compilación. Para las matrices, hay dos posibilidades:
a) haga que el índice (la dirección de la matriz) sea una variable, o b) haga el índice 'constante'
una variable. Por lo tanto:
extern type extern_array [];
matriz_extern [1] ->
{tipo volátil * t = extern_array; t [1]}
or
extern type extern_array [];
matriz_extern [1] ->
{volátil int t = 1; matriz_extern [t]}
Para estructuras (y la mayoría de los otros tipos de datos de varias palabras), la única opción es hacer que
estructura en sí misma (o la variable long long, o la ...):
estructura externa s estructura_externa;
extern_struct.field ->
{estructura volátil s * t = & extern_struct; t-> campo}
or
externo largo largo externo_ll;
extern_ll ->
{volátil largo largo * local_ll = & extern_ll; * local_ll}
Un tercer método para lidiar con esta dificultad es abandonar la 'importación automática' para
símbolo ofensivo y márquelo con "__declspec (dllimport)". Sin embargo, en la práctica
requiere el uso de #defines en tiempo de compilación para indicar si está creando una DLL,
crear código de cliente que se vinculará a la DLL, o simplemente construir / vincular a una estática
Biblioteca. Al elegir entre los diversos métodos para resolver el problema
dirección con problema de desplazamiento constante, debe considerar el uso típico del mundo real:
Original:
--foo.h
extern int arr [];
--foo.c
#include "foo.h"
void main (int argc, char ** argv) {
printf ("% d \ n", arr [1]);
}
Solución 1:
--foo.h
extern int arr [];
--foo.c
#include "foo.h"
void main (int argc, char ** argv) {
/ * Esta solución es para win32 y cygwin; no "optimizar" * /
volatile int * parr = arr;
printf ("% d \ n", parr [1]);
}
Solución 2:
--foo.h
/ * Nota: se asume la exportación automática (sin __declspec (dllexport)) * /
#if (definido (_WIN32) || definido (__ CYGWIN__)) && \
! (definido (FOO_BUILD_DLL) || definido (FOO_STATIC))
#define FOO_IMPORT __declspec (dllimport)
#else
#define FOO_IMPORTAR
#terminara si
extern FOO_IMPORT int arr [];
--foo.c
#include "foo.h"
void main (int argc, char ** argv) {
printf ("% d \ n", arr [1]);
}
Una cuarta forma de evitar este problema es volver a codificar su biblioteca para utilizar un funcional
interfaz en lugar de una interfaz de datos para las variables infractoras (p. ej. set_foo ()
get_foo () funciones de acceso). [Esta opción es específica para el puerto de destino i386 PE
del enlazador]
--deshabilitar-importación automática
No intente hacer un enlace sofisticado de "_symbol" a "__imp__symbol" para DATA
importaciones desde archivos DLL. [Esta opción es específica para el puerto de destino i386 PE del
enlazador]
--enable-runtime-pseudo-reloc
Si su código contiene expresiones descritas en la sección --enable-auto-import, es decir,
Importaciones de DATOS desde DLL con desplazamiento distinto de cero, este modificador creará un vector de
'pseudo reubicaciones en tiempo de ejecución' que pueden ser utilizadas por el entorno de ejecución para ajustar
referencias a dichos datos en su código de cliente. [Esta opción es específica del i386 PE
puerto de destino del enlazador]
--disable-runtime-pseudo-reloc
No cree pseudo reubicaciones para importaciones de DATOS de compensación que no sean cero desde DLL. [Esta
La opción es específica del puerto de destino i386 PE del enlazador]
--habilitar-extra-pe-debug
Muestra información de depuración adicional relacionada con el procesamiento de símbolos de importación automática. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
- alineación de sección
Establece la alineación de la sección. Las secciones en la memoria siempre comenzarán en las direcciones que
son un múltiplo de este número. El valor predeterminado es 0x1000. [Esta opción es específica para
Puerto de destino i386 PE del enlazador]
--apilar reserva
--apilar reserva,hacer
Especifique el número de bytes de memoria para reservar (y, opcionalmente, confirmar) para usar como
pila para este programa. El valor predeterminado es 2 MB reservados, 4K comprometidos. [Esta opción es
específico del puerto de destino i386 PE del enlazador]
--subsistema lo cual
--subsistema lo cual:gran
--subsistema lo cual:gran .menor de edad
Especifica el subsistema bajo el cual se ejecutará su programa. Los valores legales para
lo cual son "nativo", "windows", "consola", "posix" y "xbox". Opcionalmente puede configurar
la versión del subsistema también. También se aceptan valores numéricos para lo cual. [Esta opción
es específico del puerto de destino i386 PE del enlazador]
Las siguientes opciones establecen indicadores en el campo "DllCharacteristics" del archivo PE
encabezado: [Estas opciones son específicas de los puertos de destino PE del enlazador]
- alta-entropía-va
La imagen es compatible con la distribución aleatoria del diseño del espacio de direcciones de 64 bits (ASLR).
--base dinámica
La dirección base de la imagen se puede reubicar utilizando la distribución aleatoria del espacio de direcciones.
(ASLR). Esta función se introdujo con MS Windows Vista para destinos i386 PE.
--forceinteg
Se hacen cumplir las comprobaciones de integridad del código.
--nxcompat
La imagen es compatible con la Prevención de ejecución de datos. Esta característica fue
introducido con MS Windows XP SP2 para los objetivos i386 PE.
--no aislamiento
Aunque la imagen comprende el aislamiento, no aísle la imagen.
--no-seh
La imagen no usa SEH. No se puede llamar a ningún controlador SE desde esta imagen.
--no-vincular
No encuaderne esta imagen.
--wdmdriver
El controlador utiliza el modelo de controlador de MS Windows.
--saware
La imagen es compatible con Terminal Server.
--insertar marca de tiempo
--sin-insertar-marca de tiempo
Inserte una marca de tiempo real en la imagen. Este es el comportamiento predeterminado ya que coincide
código heredado y significa que la imagen funcionará con otras herramientas propietarias. los
El problema con este valor predeterminado es que resultará en imágenes ligeramente diferentes
producido cada vez que se enlazan las mismas fuentes. La opción --sin-insertar-marca de tiempo can
ser utilizado para insertar un valor cero para la marca de tiempo, esto asegurando que los binarios producidos
de fuentes idénticas se compararán de forma idéntica.
El destino C6X uClinux utiliza un formato binario llamado DSBT para admitir bibliotecas compartidas. Cada
la biblioteca compartida en el sistema debe tener un índice único; todos los ejecutables usan un índice de
0.
--dsbt-tamaño tamaño
Esta opción establece el número de entradas en el DSBT del archivo ejecutable o compartido actual.
biblioteca a tamaño. El valor predeterminado es crear una tabla con 64 entradas.
--dsbt-índice índice
Esta opción establece el índice DSBT del ejecutable actual o biblioteca compartida en índice.
El valor predeterminado es 0, que es apropiado para generar ejecutables. Si un compartido
La biblioteca se genera con un índice DSBT de 0, los relocs "R_C6000_DSBT_INDEX" son
copiado en el archivo de salida.
El proyecto --no-fusionar-entradas-exidx switch deshabilita la fusión de entradas exidx adyacentes en
información de desenrollado del cuadro.
Los enlazadores 68HC11 y 68HC12 admiten opciones específicas para controlar el banco de memoria
conmutación de mapeo y generación de código de trampolín.
--no trampolín
Esta opción desactiva la generación de trampolín. Por defecto, un trampolín es
generado para cada función lejana que se llama usando una instrucción "jsr" (esta
sucede cuando se toma un puntero a una función lejana).
--ventana bancaria nombre
Esta opción le indica al enlazador el nombre de la región de memoria en el MEMORIA
especificación que describe la ventana del banco de memoria. La definición de tal región es
luego utilizado por el enlazador para calcular la paginación y las direcciones dentro de la ventana de memoria.
Las siguientes opciones son compatibles para controlar el manejo de la generación GOT al enlazar para
68K objetivos.
--got =tipo
Esta opción le dice al enlazador qué esquema de generación GOT usar. tipo debería ser uno
of soltero, negativas, multigote or dirigidos. Para obtener más información, consulte la entrada de información
for ld.
Las siguientes opciones son compatibles para controlar la generación de instrucciones microMIPS cuando
vinculación para objetivos MIPS.
--insn32
--no-insn32
Estas opciones controlan la elección de instrucciones microMIPS utilizadas en el código generado por
el enlazador, tal como el del PLT o los talones de unión perezosos, o en relajación. Si
--insn32 se usa, entonces el enlazador solo usa codificaciones de instrucciones de 32 bits. Por defecto
o si --no-insn32 se utiliza, se utilizan todas las codificaciones de instrucciones, incluidas las de 16 bits
donde sea posible.
MEDIO AMBIENTE
Puede cambiar el comportamiento de ld con las variables de entorno "GNUTARGET",
"LDEMULATION" y "COLLECT_NO_DEMANGLE".
"GNUTARGET" determina el formato del objeto del archivo de entrada si no utiliza -b (o su sinónimo
--formato). Su valor debe ser uno de los nombres BFD para un formato de entrada. Si no hay
"GNUTARGET" en el medio ambiente, ld utiliza el formato natural del objetivo. Si "GNUTARGET"
está configurado en "predeterminado", entonces BFD intenta descubrir el formato de entrada examinando binarios
archivos de entrada; este método a menudo tiene éxito, pero existen ambigüedades potenciales, ya que
no es un método para garantizar que el número mágico utilizado para especificar formatos de archivo-objeto sea
único. Sin embargo, el procedimiento de configuración de BFD en cada sistema coloca el
formato convencional para ese sistema primero en la lista de búsqueda, por lo que las ambigüedades se resuelven
a favor de la convención.
"LDEMULATION" determina la emulación predeterminada si no utiliza la -m opción. La
La emulación puede afectar varios aspectos del comportamiento del enlazador, particularmente el enlazador predeterminado.
texto. Puede enumerar las emulaciones disponibles con el --verboso or -V opciones. Si el
-m opción no se utiliza y la variable de entorno "LDEMULATION" no está definida, la
La emulación predeterminada depende de cómo se configuró el vinculador.
Normalmente, el enlazador por defecto exigirá símbolos. Sin embargo, si
"COLLECT_NO_DEMANGLE" está configurado en el entorno, luego, por defecto, no exigirá
símbolos. El enlazador "gcc" utiliza esta variable de entorno de forma similar.
programa de envoltura. El valor predeterminado puede ser anulado por el --desmenuzar --no-exigir
.
Use sh4-linux-gnu-ld.bfd en línea usando los servicios de onworks.net