>백엔드 개발 >C++ >내 링커가 `-l`을 찾을 수 없는 이유는 무엇입니까?

내 링커가 `-l`을 찾을 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-03 07:11:39725검색

Why Can't My Linker Find `-l`?

"usr/bin/ld: -l를 찾을 수 없습니다." 문제 해결 가이드

프로그램을 컴파일할 때 "usr/bin/ld: can find -l" 오류가 발생합니다. 링커가 지정된 라이브러리를 찾을 수 없음을 나타냅니다. 이 문제를 해결하려면 다음 문제 해결 단계를 따르십시오.

1. 라이브러리 존재 확인:

참조하는 라이브러리가 지정된 위치에 있는지 확인하세요. 사용 가능한 모든 라이브러리를 나열하려면 다음 명령을 실행하십시오.

ldconfig -p | grep <nameOfTheLibrary>

2. 심볼릭 링크 유효성 검사:

라이브러리에 대한 심볼릭 링크를 생성한 경우 해당 링크가 정확하고 실제 라이브러리 파일을 가리키는지 확인하세요. 링크를 보려면 "ls -l" 명령을 사용하십시오:

ls -l <symbolicLink>

3. Verbose 링커 출력:

링커가 검색하는 특정 파일을 확인하려면 verbose 모드에서 실행하세요. 연결 명령에 "--verbose" 플래그를 추가합니다.

ld -l<nameOfTheLibrary> --verbose

출력에는 링커가 고려 중인 모든 잠재적 디렉터리와 파일이 표시됩니다.

4. 누락된 라이브러리 설치:

라이브러리가 없거나 찾을 수 없는 경우 패키지 관리자를 사용하여 설치하세요. 예를 들어 Debian 기반 시스템의 경우:

sudo apt-get install <nameOfTheLibrary>-dev

5. 명령에 라이브러리 경로 추가:

어떤 경우에는 링커가 라이브러리를 자동으로 찾지 못할 수도 있습니다. "-L" 플래그를 사용하여 라이브러리 경로를 수동으로 지정할 수 있습니다.

g++ -o myprogram myprogram.cpp -l<nameOfTheLibrary> -L/path/to/library

예:

참조된 문제에 설명된 문제를 해결하려면 링커가 ZLIB 라이브러리를 찾을 수 없습니다:

  1. zlib.so 파일이 지정된 디렉터리에 있는지 확인하세요. 또는 버전이 지정된 파일(zlib.so.N)에 대한 심볼릭 링크를 생성하십시오.
  2. ld -lzlib --verbose를 실행하여 검색 중인 파일을 확인하십시오.
  3. zlib.so가 누락된 경우, 기존 버전 파일에 대한 심볼릭 링크를 생성합니다:
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so

위 내용은 내 링커가 `-l`을 찾을 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.