c 표준라이브러리는 어디에 있나요?

익명 사용자의 이미지

1.표준헤더는 /usr/include에 있는데
이것은 왜 컴파일시에 cc -o a a.c -I/usr/include
와 같이 지정할 필요가 없는지요?

2. 또한 표준라이브러리는 어디에 존재하는지요?
그리고,
cc -o a a.c -L(라이브러리디렉토리) -l(라이브러리명)
과 같이 하지 않아도 되는 이유를 알고싶습니다.

익명 사용자의 이미지

ldconfig -p 이렇게 해보세요..

/etc/ld.so.conf

이곳에 정의 되어 있기 때문에 사용하는 것 입니다.

질문맨의 이미지

모든 UNIX 시스템에서는 공통으로

표준라이브러리: /usr/lib
표준헤더:/usr/include

입니까?
이 외의 디렉토리들에 있는것들을 사용할때는
-I -L
로 지정해 줘야 하는지요 ?

그리고 Makefile을 작성할때 -I -L 옵션을 지정해주는
보편적인 macro 이름은 뭘 쓰나요 ?

파파 wrote:
ldconfig -p 이렇게 해보세요..

/etc/ld.so.conf

이곳에 정의 되어 있기 때문에 사용하는 것 입니다.

송지석의 이미지

일단 가장 기본 디렉토리는 /lib입니다.

/etc/ld.so.conf 안에 없어도 기본으로 사용하는 디렉토리입니다.

pynoos의 이미지

gcc --help 를 해보시면...

gcc -print-search-dirs

를 해보실 욕구를 느끼실수도 있......구요..

gcc -dumpspecs

도 훌륭한 자료가 됩니다.

include directory는 gcc에 있다기보다는 cpp (preprocessor)에 있는데,

/usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0

wrapper(cpp) 말고, 위와 같이 원본 preprocess가 compile 될때, 들어갑니다.

gcc -v option을 넣어 compile 해보면 그 위치는 알 수 있습니다.