Dlaczego kolejność opcji „-l” w gcc ma znaczenie?

Próbuję skompilować program, który używaudis86 biblioteka. Właściwie używam przykładowego programu podanego winstrukcja obsługi biblioteki. Ale podczas kompilacji daje błąd. Błędy, które otrzymuję, to:

example.c:(.text+0x7): undefined reference to 'ud_init'
example.c:(.text+0x7): undefined reference to 'ud_set_input_file'
.
.
example.c:(.text+0x7): undefined reference to 'ud_insn_asm'

Polecenie, którego używam, to:

$ gcc -ludis86 example.c -o example 

zgodnie z instrukcją obsługi.

Oczywiście linker nie jest w stanie połączyć biblioteki libudis. Ale jeśli zmienię moje polecenie na:

$ gcc example.c -ludis86 -o example 

Zaczyna działać. Czy więc ktoś może wyjaśnić, jaki jest problem z pierwszym poleceniem?

questionAnswers(3)

yourAnswerToTheQuestion