— 이강우 2020/10/19 14:21
리눅스에서 소스 컴파일을 진행하다 보면 아래와 비슷한 오류를 만나는 경우가 있다.
ld: cannot find -lcairo ld: cannot find -lXrender ld: cannot find -lfontconfig ld: cannot find -lpixman-1 ld: cannot find -lfreetype ld: cannot find -lexpat ld: cannot find -lpng ld: cannot find -lbz2 ld: cannot find -lpng ld: cannot find -lXpm ld: cannot find -lX11 ld: cannot find -lXext ld: cannot find -lfl
이 오류는 컴파일 과정에서 라이브러리 링크에 필요한 라이브러리들이 없어서 발생하는 오류이다.
그렇다면 필요한 라이브러리를 설치해주기만 하면 해결되는데 필요한 라이브러리가 무엇인지 확인하기 위해서는
ld: cannot find -l
뒤에 오는 이름을 살펴보면 된다.
위의 경우중 ld: cannot find -lfreetype
는 freetype
이라는 라이브러리가 필요한것인데 리눅스 라이브러리는 보통 *.so
, 또는 *.a
와 같은 파일명으로 되어있다.
따라서 해당 라이브러리가 있는 패키지명을 찾기 위해서 아래 명령어를 입력한다.
[root@dev ~]# yum provides */libfreetype.* freetype-devel-2.9.1-4.el8.x86_64 : FreeType development libraries and header files Repo : @System Matched from: Filename : /usr/lib64/libfreetype.so
위와같이 */lib<라이브러리명>.*
으로 검색하면 해당 라이브러리가 포함된 패키지가 무엇인지 찾을수 있다. 이후 해당 패키지를 설치해주면 된다.