stdio.h에 대한 질문이 C 언어로 있습니다.stdio.h - libfile의 이름은 무엇이고 어디에서 찾을 수 있습니까? Linux
잘 - 이것은 표준 입력 및 출력 스트림의 함수 원형 만 포함합니다. 그러나이 표준 입출력을위한 libfile (objectfile)이 있어야합니다. 맞습니까?
하지만 이름은 무엇이고 어느 폴더에 리눅스 (우분투)가 있습니까?
stdio.h에 대한 질문이 C 언어로 있습니다.stdio.h - libfile의 이름은 무엇이고 어디에서 찾을 수 있습니까? Linux
잘 - 이것은 표준 입력 및 출력 스트림의 함수 원형 만 포함합니다. 그러나이 표준 입출력을위한 libfile (objectfile)이 있어야합니다. 맞습니까?
하지만 이름은 무엇이고 어느 폴더에 리눅스 (우분투)가 있습니까?
내가이 얻을 간단한 인사 세계 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
printf
glibc
는에 의해 제공되는 심볼.
% nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep printf
...
00000000000542f0 T printf
0000000000109dc0 T __printf_chk
000000000004f1d0 T __printf_fp
또는
당신이 정보를 디버깅 인쇄 ldd
을 요청할 수 있습니다 : nm
는 printf
기호가 해당 개체에 의해 제공되는 표시
% 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]
그것은 따라 사용하는 표준 라이브러리의 구현이에 ,하지만 만약 당신이 주류 및 gcc와 함께 컴파일하면
와 연결하는 데 사용되는 라이브러리의 경로를 찾을 수 있습니다 $ gcc -print-file-name=libc.so /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libc.so
시스템에 둘 이상의 구현을 설치할 수 있다는 점을 고려하십시오.
이것은 (일반적으로) libc에 의해 구현됩니다. –
그건 [C 표준 라이브러리] (https://en.wikipedia.org/wiki/C_standard_library)의 일부가 될 것입니다! [glibc] (https://en.wikipedia.org/wiki/GNU_C_Library)는 Linux에서 일반적으로 사용됩니다. – Ryan
우분투는 확실하지 않지만'/ lib/libc *'및/또는'/ lib64/libc *'일 가능성이 있습니다. – mafso