¿Qué son las opciones de línea de comandos start start-group y?end-group?


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

-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.

Author: jww, 2011-04-13

1 answers

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

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

-( los archivos -) o --start-group los archivos --end-group

Los archivos deben ser una lista de archivos. Pueden ser nombres de archivo explícitos, o-l opcion.

Los archivos especificados se buscan repetidamente hasta que no se crean nuevas referencias indefinidas. Normalmente, un archivo se busca solo una vez en el orden que se especifica en la línea de comandos. Si se necesita un símbolo en ese archivo para resolver un símbolo indefinido al que hace referencia un objeto en un archivo que aparece más adelante en la línea de comandos, el enlazador no podrá resolver esa referencia. Al agrupar los archivos, todos se buscarán repetidamente hasta que todo sea posible las referencias se resuelven.

El uso de esta opción tiene un costo de rendimiento significativo. Es mejor usarlo solo cuando hay referencias circulares inevitables entre dos o más archivos.

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

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

 74
Author: osgx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:48