Что такое libc? какие функции он включает? как мы можем получить исходный код этого?
Согласно Википедии, существует много вариантов стандартной библиотеки C, основанной на операционной системе и компиляторах. Ссылка: http://en.wikipedia.org/wiki/C_standard_library
Но я хочу понять, как много функций, которые объявлены в разных заголовках (например, stdio.h, string.h, stdlib.h и т. Д.), Определены в одной библиотеке. Является ли файл исходного кода одинаковым для всех этих заголовочных файлов или существуют разные библиотеки для stdio.h, string.h и т. Д.? Поскольку я новичок в программировании, я не знаю, могут ли несколько файлов исходного кода создать одну библиотеку, например исполняемый файл. Если это возможно, я могу понять, что libc содержит определение всех стандартных заголовочных файлов. Где я могу увидеть исходный код стандартной библиотеки C?
Это статическая библиотека или динамическая библиотека? Если обе версии присутствуют в моей среде (OS/IDE), какая из них становится связанной, когда я включаю любой стандартный заголовочный файл в свой исходный код. Это зависит от IDE? Но в случае с gcc, программист не включает libc явно.
Является ли libc стандартным именем для стандартной библиотеки C?
В операционной системе Windows / среде это уже присутствует или нет? Если он присутствует, как он называется (только ли это libc)?
Есть ли другая стандартная библиотека C, такая как libm?
1 ответ
Вообще говоря, файл заголовка (.h) содержит объявления функций и переменных. Файлы реализации (.c) содержат фактическую реализацию объявленных функций. Поскольку несколько файлов реализации могут быть переведены и связаны в один двоичный файл библиотеки, вы можете иметь одну библиотеку с несколькими заголовками. Многие реализации библиотеки C являются открытыми, и вы можете посмотреть их исходный код на соответствующих страницах проекта. GNU libc и RedHat newlib являются наиболее известными. Я уверен, что люди будут добавлять больше в комментариях.
Реализация определена. Вы можете переводить одни и те же источники в статическую или динамическую библиотеку. Нередко в вашей системе устанавливаются обе версии. Поскольку практически каждый исполняемый файл требует libc, он обычно добавляется во вход компоновщика по умолчанию, поэтому вам не нужно добавлять
-lc
к каждой командной строке.Нет. Стандартное имя для стандартной библиотеки C - "Стандартная библиотека C". Обратите внимание, что практически все реализации стандартной библиотеки расширяют библиотеку нестандартными функциями. Они остаются нестандартными, даже если они входят в стандартную библиотеку. (
alloca()
приходит на ум.)MSVCRT.dll или что-то такое, если я правильно помню.
libm обозначает математический раздел стандартной библиотеки, который по умолчанию не добавляется к входу компоновщика, поскольку это редко требуется. Существует только одна стандартная библиотека C, описанная стандартом языка ISO/IEC 9899 (отсюда и название). Существует множество других библиотек, которые, как можно предположить, присутствуют в данной системе, но только то, что описано в документах ИСО / МЭК, является "стандартом".