programing

gcc/usr/bin/ld: 오류: -ln커서를 찾을 수 없습니다.

css3 2023. 9. 17. 13:25

gcc/usr/bin/ld: 오류: -ln커서를 찾을 수 없습니다.

저는 Ubuntu 12.04를 실행하고 있으며 현재 C, OpenGL, 티포트 및 입력 방법을 포함한 프로젝트를 진행하고 있습니다.

문제는 화살표 키를 입력하기로 결정하면서 시작되었습니다.화살표 키의 키 코드를 확인해 보았는데 화살표가 모두 0을 반환합니다.이걸 어떻게 작동시키는지 찾아봤는데 코니오가 나왔어요유감스럽게도 이것은 리눅스용으로 사용할 수 없는 오래된 DOS 헤더입니다.그리고 ncurses라는 대체자를 찾았습니다.

필요한 라이브러리를 설치한 후 빌드 지침을 자세히 따라 curs.h를 main.c 소스에 #포함시켰습니다.처음에 gcc를 사용하여 컴파일을 시도했을 때 다음과 같은 오류가 발생했습니다.

main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'
main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'

makefile에 다음과 같이 -l curses를 추가하여 해결책을 찾았습니다.

SOURCES=main.c

main: main.o
    gcc -lm -lGL -lGLU -lglut -lncurses main.o -o main

main.o: main.c
    gcc -lm -lGL -lGLU -lglut -c main.c

하지만 저는 또 다른 실수를 당했습니다.

/usr/bin/ld: error: cannot find -lncurses

이전의 오류뿐만 아니라.

우분투 포럼과 스택 오버플로우를 검색하는 데 지난 이틀을 보냈습니다.어떤 도움이라도 주시면 감사하겠습니다.

추신: 중요한 문제인지는 모르겠지만 /usr/bin/ld를 실행하려고 하면 다음과 같은 오류가 발생합니다.

ld: fatal error: no input files

같은 문제를 가진 모든 사람에게: 32비트 라이브러리가 누락되었습니다. lib32ncurses 5-dev 패키지가 누락된 64비트 서버에서 32비트를 컴파일하고 있었습니다.

Ubuntu에서 간단히 실행한 것은 다음과 같습니다.

sudo apt-get install lib32ncurses5-dev

우선 링크할 때는 오브젝트 파일 뒤에 라이브러리를 넣어야 합니다.그리고 소스 파일의 컴파일 시에는 이 파일들을 아예 존재하지 않습니다.

그되어 있지 경우 . 는 Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ-L명령줄 옵션:

gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses

를 .ncurses-static만약 당신이 단지 그것만을 가지고 있다면, 패키지 또한.ncurses-devel패키지가 Ubuntu OS에 설치되어 있습니다.

만약 그것이 당신의 문제를 해결해 준다면, 게다가 당신이 @Joachim의 컴파일 지침을 추가한다면, 당신은 멋진 출발을 할 수 있을 것입니다.

gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses

링커가 검색 경로에서 공유 라이브러리를 찾을 수 없습니다.를 "lib"에 하는 경우LD_LIBRARY_PATH링커가 환경 변수를 찾고 이에 대해 링크할 수 있어야 합니다.그런 경우에는 다음을 생략할 수 있습니다.-Lgcc 옵션:

gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses

그리고 그것은 잘 정리될 것입니다.

: 입니다를 .apt-get install libncurses5-dev문제를 해결합니다.

FYI.LD_LIBRARY_PATH환경 변수에는 런타임에 라이브러리 종속성을 해결하는 데 링커가 사용하는 콜론으로 구분된 경로 목록이 포함됩니다.이 경로는 표준 라이브러리 경로보다 우선 순위가 부여됩니다./lib그리고./usr/lib. 표준 경로는 계속 검색되지만 의 경로 목록 이후에만 검색됩니다.LD_LIBRARY_PATH소진되었습니다.

사용하는 최선의 방법LD_LIBRARY_PATH프로그램을 실행하기 직전에 명령줄 또는 스크립트에 설정하는 것입니다.이렇게 하면 새것을 유지할 수 있습니다.LD_LIBRARY_PATH현재 실행 중인 셸 인스턴스에 대해 로컬과 같은 시스템의 나머지 부분에서 분리됩니다.

$ export LD_LIBRARY_PATH="/path/to/libncurses/library/directory/:$LD_LIBRARY_PATH"
$ gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses

언급URL : https://stackoverflow.com/questions/14416487/gcc-usr-bin-ld-error-cannot-find-lncurses