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
링커가 환경 변수를 찾고 이에 대해 링크할 수 있어야 합니다.그런 경우에는 다음을 생략할 수 있습니다.-L
gcc 옵션:
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
'programing' 카테고리의 다른 글
sql의 시퀀스 오류입니다.시퀀스 번호는 여기서 허용되지 않습니다. (0) | 2023.09.17 |
---|---|
Excel에서 CSV에 저장하면 지역별 날짜 형식이 손실됨 (0) | 2023.09.17 |
jquery/messages/messages/json html을 텍스트 문자열로 렌더링 (0) | 2023.09.17 |
정수(id)를 텍스트 문자열에 매핑하시겠습니까? (0) | 2023.09.17 |
문자 배열의 리터럴 문자열 이니셜라이저 (0) | 2023.09.17 |