리눅스에서 ncurses를 사용하여 프로그램을 개발하려고합니다. Hello World 예도 컴파일 할 수 없습니다. 여기에 코드입니다 : 내가 컴파일 할 때리눅스에서 ncurses를 사용할 때 정의되지 않은 참조
#include <curses.h>
int main()
{
initscr();
printw("Hello, world.");
refresh();
getch();
endwin();
return 0;
}
, 내가 얻을 : 그 호출되는 함수의 모든 일에 대한
hello.c:(.text+0x12): undefined reference to `initscr'
.
나는 apt-get을 통해 ncurses를 설치하고, 또한 내가#include
모두
curses.h
및
ncurses.h
을 시도 등, 설치,
을 소스를 다운로드하고 컴파일.
무슨 일입니까?
왜'$ gcc -lncurses -o hello hello.c'가 작동하지 않지만'$ gcc -o hello hello.c -lncurses'는 왜 작동합니까? – rootkea
@rootkea 링커는 명령 행에 나타나는 순서대로 객체를 조작하기 때문에. 'hello'를 처음 보았을 때, 필요한 모든 심볼을 기억하고,'ncurses' 라이브러리를 볼 때 찾은 것을 사용하여 심볼을 해석합니다. 'ncurses'가 처음 오면, 그것은 많은 심볼을 보지만 "나는 그것들 중 어느 것도 필요로하지 않는다"고 말하고 그것들을 버린다. [documentation] (https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-l-1172) 또는 [기타 SO 탐구] (http://stackoverflow.com/questions/45135)를 참조하십시오./linker-order-gcc)를 참조하십시오. –