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?