saldo estado español cuenta compilador cash card cajeros gcc

estado - GCC: ¿cuáles son las opciones de línea de comando--start-group y-end-group?



global cash card cajeros (1)

¿Cuál es el propósito de esas opciones de línea de comando? Por favor ayuda a descifrar el significado de la siguiente línea de comando:

-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib

Aparentemente tiene algo que ver con la vinculación, pero el manual de GNU es silencioso, lo que significa exactamente agrupar.


Es para resolver dependencias circulares entre varias bibliotecas (enumeradas entre -( y -) ).

Citando ¿Por qué el orden en que se vinculan las bibliotecas a veces causa errores en GCC? o man ld http://linux.die.net/man/1/ld

-( archivos -) o --end-group

Los archivos deben ser una lista de archivos de almacenamiento. Pueden ser nombres de archivos explícitos o -l opciones.

Los archivos especificados se buscan varias veces hasta que no se creen nuevas referencias no definidas. 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 símbolo indefinido referido por un objeto en un archivo que aparece más adelante en la línea de comando, el vinculador no podrá 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. Lo mejor es usarlo solo cuando haya referencias circulares inevitables entre dos o más archivos.

Por lo tanto, las bibliotecas dentro del grupo pueden buscarse nuevos símbolos varias veces, y no necesita construcciones feas como -llib1 -llib2 -llib1

El archivo PS significa básicamente una biblioteca estática (archivos *.a )