본문 바로가기

Server/Unix, Linux

gcc include path 설정

반응형

ldconfig를 이용한 path 설정


우리는 C언어를 배울때 hello world!를 출력 할 때 그냥 아무 생각 없이 #include <stdio.h>를 사용했다. 하지만 대체 이 stdio.h는 어디에 있는 헤더파일일까? 그 경로는 다음과 같다.


/usr/include/

이 폴더를 잘 보면 수많은 헤더파일들이 존재한다. 이 중 당연히 stdio.h도 존재한다.


그렇다면 이 경로는 대체 어디에서 설정하는 것인가?


CentOS 기준으로는 다음의 파일이 관리한다.


/etc/ld.so.conf


cat /etc/ld.so.conf를 해보니 다음과 같이 나온다.


/etc/ld.so.conf.d/*


즉 /etc/ld.so.conf.d/안에 있는 모든 conf파일에 저장된 경로를 읽어오는 것이다.


내가 특정한 내가 모아놓은 헤더파일을 간편히 읽어오게 path를 지정하고 싶다면, 위의 폴더 안에 새로운 conf파일 하나를 만들어 거기다 경로를 지정해주면 된다.


나는 지금 gcc를 4.7 버전으로 업데이트 한 뒤에 stddef.h 등을 읽어오지 못했다. 

그래서 찾아보니 이 파일들은 다음의 위치에 존재한다.


/usr/include/linux/


나는 그래서 /etc/ld.so.conf.d/에 yjkim20170405.conf라는 파일을 만들었다. 


그리고 이 파일에 /usr/include/linux/ 를 적어놓았다.

그렇다면 이제 저 폴더 안에 있는 모든 헤더파일들은 알아서 잘 읽어올 수 있다.

저 폴더는 root의 폴더이기 때문에 su로 관리자 계정으로 가서 만들거나, sudo를 붙여서 만들어야지 편집이 가능하다.


이제 컴퓨터에게 path 세팅이 변경되었기 때문에 업데이트를 해줘야한다고 알려주기 위해 다음의 명령어를 실행하면 끝이 난다.


ldconfig



간단 요약 (CentOS 기준)


1.

/etc/ld.so.conf.d/ 안에 경로를 적은 새로운 conf 파일을 하나 만든다. 관리자 권한으로,


2.

ldconfig 로 컴에게 업데이트된 사항을 반영토록 한다.


그럼 즐 코딩!

반응형