Есть хелло ворлд на си
#include <ncurses.h>
int main()
{
initscr();
curs_set(0);
printw("Hello, World!");
refresh();
getch();
endwin();
}
Компилирую так
cc -lncurses crap.c -o crap
/usr/bin/ld: /tmp/cch6cZ50.o: предупреждение: перемещение указывает на «stdscr» из раздела только для чтения «.text»
/usr/bin/ld: /tmp/cch6cZ50.o: в функции «main»:
crap.c:(.text+0x5): неопределённая ссылка на «initscr»
/usr/bin/ld: crap.c:(.text+0xf): неопределённая ссылка на «curs_set»
/usr/bin/ld: crap.c:(.text+0x20): неопределённая ссылка на «printw»
/usr/bin/ld: crap.c:(.text+0x27): неопределённая ссылка на «stdscr»
/usr/bin/ld: crap.c:(.text+0x2f): неопределённая ссылка на «wrefresh»
/usr/bin/ld: crap.c:(.text+0x36): неопределённая ссылка на «stdscr»
/usr/bin/ld: crap.c:(.text+0x3e): неопределённая ссылка на «wgetch»
/usr/bin/ld: crap.c:(.text+0x43): неопределённая ссылка на «endwin»
/usr/bin/ld: предупреждение: создаётся DT_TEXTREL в PIE
collect2: error: ld returned 1 exit status
Не собирается.
Компилирую так
cc crap.c -lncurses -o crap
Работает. Вопрос - почему? Почему от перестановки слагаемых ключа пример скомпилировался?
На предыдущей системе (9 демьян) можно было указывать ключ хоть где и всё компилировалось, но на десятом столкнулся вот с такой фигней.