간단한 프로그램을 컴파일 하려고 합니다.
gcc main.c
gcc에서 다음 오류가 발생합니다.
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
이 문제를 어떻게 해결할 수 있나요?
저는 Linux Mint 17.2를 사용하고 있습니다. gcc 버전은 4.8.4입니다.
답변1
ld
링커는 작성한 코드를 기존 라이브러리 코드와 결합하는 프로그램입니다. -lc
파일에 저장되고 링커에 전달된 libc.a
옵션의 결과로 링크되는 라이브러리를 나타냅니다.-lc
libc
~이다C 표준 라이브러리, 링크하지 말라고 명시적으로 요청하지 않는 한 모든 프로그램에서 자동으로 링크됩니다(libc 자체를 컴파일하는 것과 같은 작업을 제외하고는 거의 수행되지 않습니다. libc 없이는 할 수 있는 일이 거의 없고 모호하게 이식 가능한 것도 전혀 불가능하기 때문입니다).
제공해야 합니다 libc.a
. 찾을 수 있습니다 ( 먼저 설치한 후 실행하여 초기화 apt-file search /libc.a
해야 함 ). 이 패키지는 Debian 및 그 파생물(Ubuntu, Mint 등 포함)의 대부분의 개발 패키지라고 합니다 . 여기서 NAME은 라이브러리 모음의 이름입니다(항상 링크하는 특정 라이브러리의 이름은 아닙니다). package )와 같은 다른 라이브러리가 포함되어 있으며 #은 버전 번호입니다.apt-file
sudo apt-file update
libc6-dev
libNAME#-dev
libc6
libm
C 표준 라이브러리는 거의 모든 것을 구축하는 데 필요하므로구축을 위한 필수 패키지, 컴파일을 수행하는 경우 포함되어야 합니다.