Вот я пишу в терминале две строки:
gcc microphone.c -lasound -o /tmp/a.out
gcc -lasound -o /tmp/a.out microphone.cПервая - компилируется успешно, молча.
Вторая строка - сыпет ошибки, код выхода 1 - ошибка.
/tmp/cch9ZW3l.o: In function `main':
microphone.c:(.text+0x14ce): undefined reference to `snd_pcm_open'
... множество аналогичных сообщений
microphone.c:(.text+0x21d6): undefined reference to `snd_pcm_close'
collect2: ld returned 1 exit statusУ автора ( http://alumnos.elo.utfsm.cl/~yanez/alsa-sample-programs/ ) в make файле
gcc -lasound -o microphone microphone.cСмотрю ещё в начало "man gcc" - допускается указание входного файла в конце команды.
Чем объясняется разница в реакциях на команду? В чём дело?
>[оверквотинг удален]
> ... множество аналогичных сообщений
> microphone.c:(.text+0x21d6): undefined reference to `snd_pcm_close'
> collect2: ld returned 1 exit status
>
а где оно в начале команды допускается нашли?
гцц этой командой выполняет два действа - компилирует исходник в объектный файл и транслирует его в исполняемый, линкуя с чем указано. второе действо уже зависит от указаной последовательности, - к примеру, линковщик может выбросить библиотеку полностью, если на
этепе линковки с ней ни один символ не резолвиться. отсюда и ошибка.