tutorial puertos primeros pasos español elastic gcc linker ld binutils

gcc - puertos - ¿Importa el orden de las opciones-l y-L en el enlazador GNU?



logstash tutorial español (1)

Sí, el orden de las opciones -L importa, al igual que las opciones -l y -I .

Del man ld

-Lsearchdir
--library-path = searchdir

Agregue path searchdir a la lista de rutas que ld buscará bibliotecas de archivos y scripts de control de ld. Puedes usar esta opción cualquier cantidad de veces. Los directorios se buscan en el orden en que se especifican en la línea de comandos. Los directorios especificados en la línea de comando se buscan antes que los directorios predeterminados. Todas las opciones -L se aplican a todas las opciones -l, independientemente del orden en que aparezcan las opciones.

Las documentaciones de GCC y más específicamente las Opciones de Enlace serán útiles para usted

Editar
Lo sentimos, de hecho me perdí el enlace que le he dado. "man ld" solo se puede escribir en la consola.

Edit2
Hice una prueba simple poniendo opciones -L antes de -L y no muestra ninguna diferencia en comparación con -L antes de -l

Así que respondiendo a tu segunda pregunta, esta

gcc -lm hello.c -Lx

es igual a esto

gcc -Lx -lm hello.c

Se busca primero libm en el directorio x / en ambas pruebas.

Sin embargo, tenga en cuenta que poner -l<lib> antes de los archivos de origen es una mala práctica, que puede llevar a referencias no definidas al vincular. Esta es la forma correcta

gcc hello.c -Lx -lm

La opción -l le dice al enlazador que busque las bibliotecas en los directorios estándar. Y con -L, podemos especificar nuestros propios directorios de bibliotecas para la búsqueda.

Pregunta: ¿La secuencia de orden también es importante para la opción -L, como lo hace para la opción -l en el enlace?

Este enlace: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html no dice mucho sobre la secuencia de -L.

EDITAR también

Los directorios especificados en la línea de comando se buscan antes que los directorios predeterminados

es de la página del manual (como lo señaló Dmitry), significa que incluso si especifico el orden como:

gcc -lm hello.c -Lx

¿Todavía se dará preferencia al directorio especificado con -L?