где найти c исходным кодом - PullRequest
2 голосов
/ 16 июня 2011

Я новичок в C, и я хотел бы прочитать, как реализованы различные библиотеки. Я посмотрел в / usr / src / include и нашел только файлы .h. Например, я смотрел на malloc.h и все, что он делает, объявляет внешние функции. Поэтому я пытаюсь найти источник для этих функций. Я скачал исходный код gcc, но, глядя на исходный код gcc, он больше похож на код компилятора, чем на код для библиотек, таких как stdlib. Не могли бы вы помочь мне, указав мне правильное направление.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 16 июня 2011

Вам необходимо получить исходный код связанной библиотеки C, вероятно, glibc или eglibc в вашем случае.

В папке / usr / include /присутствуют только заголовки libc вместе с некоторыми заголовками ядра linux в подпапке linux /.

7 голосов
/ 16 июня 2011

Вы ищете glibc , а не gcc.

3 голосов
/ 16 июня 2011
  • .h файлы никогда не содержат код (ну, по крайней мере, они должны. Макросы - исключения)
  • основные функции C находятся в ядре glibc или linux
  • gcc, linux и glibc code - огромные звери, если вы начинающий, вы должны пойти на более простые вещи
  • вам, вероятно, следует взять простую библиотеку, в которой есть несколько инструментов, по узкой теме.
  • затем перейдите на linux и glibc (или uclibc)

Я лично узнал много интересного, прочитав системные библиотеки микроконтроллеров, такие как http://www.nongnu.org/avr-libc/,, но это зависит от того, что вам нужно сделать, и для его запуска требуется микроконтроллер.

Идея: в зависимости от того, что вы ищете, вы можете перейти к busybox: это переопределение многих полезных системных команд, вы можете многому научиться из него, и для его запуска не требуется выделенный компьютер.

Обновление: я задал вопрос, связанный с функциями glibc, который получил несколько очень интересных ответов от моего не-гуру p.o.v: где найти исходный код select () в исходном коде glibc?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...