2011-08-15 2 views
1

Можно создать дубликат:
Where to find stdio.h functions implementations?Функции библиотеки - где я могу найти их

В C я использую заголовки, которые содержат прототипы и объявления функций, предоставляемых библиотеками, но где такие функции, как printf, scanf и т. д. сохранены?

Где они хранятся?

В каком каталоге?

Почему я не могу найти их? Сохраняются ли они как файлы объектов?

+1

Вы ищете декларацию, исходный код или исполняемый код этих функций библиотеки? – stakx

+0

Я не ищу исходный код. Я хочу знать, хранятся ли они как файлы объектов или исполняемые файлы, в зависимости от того, где они хранятся? –

+1

Реальные реализации библиотеки хранятся в файлах общей библиотеки, которые связаны с вашими программами и загружаются ОС во время выполнения. Стандартные функции библиотеки C, такие как printf, хранятся в /lib/libc.so в Linux/BSD и c: \ windows \ system32 \ msvcrt.dll в Windows. Это то, что вы имели ввиду? –

ответ

0

Эти функции предоставляются стандартной библиотекой C, которую часто называют libc.

В linux вы можете найти его под /lib/libc.so В Windows это называется C Run-Time Libraries.

0

Одно место для регистрации - section 3 of the manual. Затем на каждой странице описания отдельных функций перечислены необходимые файлы заголовков и какие дополнительные библиотеки, если они есть, вам нужно связать.

1

Как все говорили, его int libc. Вы можете осуществлять поиск Google для исходного кода браузера для операционной системы вы заинтересованы, для Linux я мог бы найти: http://lxr.linux.no/linux/

Для netbsd, вы можете найти printf и scanf здесь: http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/?only_with_tag=MAIN#dirlist

+0

Во многих Unix-подобных системах математические функции находятся в 'libm', а не' libc'. (Это вызывает много путаницы, поскольку компоновщик не может найти 'sqrt()', например, если вы явно не ссылаетесь на компоновщик или компилятор с '-lm'.) –

+0

@Keith Thompson: Спасибо, кайт. Вы правы, но я, вероятно, не понимаю вашу точку зрения. Что вы пытаетесь передать? – hari

+0

Только то, что код, реализующий математические функции, часто находится в libm, а не в libc. (Точнее, в /usr/lib/libm.so, не /usr/lib/libc.so или какое-либо другое соглашение об именовании для конкретной системы.) –

0

В Mac OS X, те, функции находятся в stdio.h и находится в /usr/include. Библиотека libc.dylib находится в /usr/lib.

+0

'libc.dylib' является символической ссылкой на фактическую системную библиотеку на OS X -' libSystem.dylib'. – duskwuff

Смежные вопросы