2014-09-01 4 views
1

stdio.h에 대한 질문이 C 언어로 있습니다.stdio.h - libfile의 이름은 무엇이고 어디에서 찾을 수 있습니까? Linux

잘 - 이것은 표준 입력 및 출력 스트림의 함수 원형 만 포함합니다. 그러나이 표준 입출력을위한 libfile (objectfile)이 있어야합니다. 맞습니까?

하지만 이름은 무엇이고 어느 폴더에 리눅스 (우분투)가 있습니까?

+1

이것은 (일반적으로) libc에 의해 구현됩니다. –

+0

그건 [C 표준 라이브러리] (https://en.wikipedia.org/wiki/C_standard_library)의 일부가 될 것입니다! [glibc] (https://en.wikipedia.org/wiki/GNU_C_Library)는 Linux에서 일반적으로 사용됩니다. – Ryan

+0

우분투는 확실하지 않지만'/ lib/libc *'및/또는'/ lib64/libc *'일 가능성이 있습니다. – mafso

답변

2

내가이 얻을 간단한 인사 세계 C 프로그램을 컴파일하는 경우 :

% ldd easy 
linux-vdso.so.1 => (0x00007fffcc9fe000) 
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4a90eb6000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f4a91299000) 

libc을 필요로 하는가를?

% nm easy 
... 
000000000040052d T main 
      U [email protected]@GLIBC_2.2.5 

printfglibc는에 의해 제공되는 심볼.

% nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep printf 
... 
00000000000542f0 T printf 
0000000000109dc0 T __printf_chk 
000000000004f1d0 T __printf_fp 
또는

당신이 정보를 디버깅 인쇄 ldd을 요청할 수 있습니다 : nmprintf 기호가 해당 개체에 의해 제공되는 표시

% LD_DEBUG=bindings ./easy 2>&1 | grep printf 
    17922: binding file ./easy [0] to /lib/x86_64-linux-gnu/libc.so.6 [0]:\ 
    normal symbol `printf' [GLIBC_2.2.5] 
1

그것은 따라 사용하는 표준 라이브러리의 구현이에 ,하지만 만약 당신이 주류 및 gcc와 함께 컴파일하면

와 연결하는 데 사용되는 라이브러리의 경로를 찾을 수 있습니다

$ gcc -print-file-name=libc.so /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libc.so

시스템에 둘 이상의 구현을 설치할 수 있다는 점을 고려하십시오.