путаница в библиотеке gcc - PullRequest
       1

путаница в библиотеке gcc

1 голос
/ 31 декабря 2010

Я проводил некоторое время в эти дни, изучая внутренние компоненты gcc.Я нашел коллекцию библиотек, которые gcc предоставляет для поддержки наших программ.

Для чего используется libgcc (библиотека времени выполнения GCC.) Я имею в виду, какие функции этой библиотеки наиболее часто используются ??: - /

И я обнаружил, что там была библиотека libiberty.Я обнаружил, что библиотека включает в себя многие из часто используемых функций (я имею в виду используемые мной подпрограммы), включая alloca, concat и calloc.Но я не смог найти функции, похожие на них, такие как malloc и другие строковые процедуры.Итак, когда мы включаем < string.h > или < alloc.h >, это заголовочный файл связан с двумя разными библиотеками?

Мои концепции не так хороши.:( помогите пожалуйста ..

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

libgcc содержит вспомогательные функции, которые обходят «ограничения» аппаратного обеспечения;например, 64-разрядное целочисленное деление является частью libgcc на x86 (_32) - печально известный __udivdi3.

0 голосов
/ 31 декабря 2010

Вы можете рассматривать библиотеку как реализацию функций, которые вы можете использовать в своей программе, не потрудившись написать для них код. Например, вы используете функцию «printf», но на самом деле вы не пишете код для «printf». Проще говоря, библиотеки - это набор реализаций обычно используемого кода (или функций).

Когда вы компилируете и связываете вашу программу, основываясь на опциях связывания, ваша программа связывается (статически или динамически) с другими библиотеками.

Прочтите о статических и динамических ссылках для более подробной информации и лучшего понимания библиотек.

Давайте рассмотрим пример:

#include <stdio.h>
#include <math.h>    // contains deceleration of sqrt function

int main ()
{
printf ("sqaure root of 4 is %d.", sqrt (4));
}

В этом коде мы используем функцию sqrt, но мы ее не реализуем. Теперь, если мы скомпилируем и свяжем его с библиотекой, содержащей определение функции sqrt (математическая библиотека), наш код будет хорошо работать во время выполнения.

Однако, если вы не хотите ссылаться на математическую библиотеку, вам придется написать собственную функцию для вычисления sqrt.

скомпилировать и связать математическую библиотеку с помощью команды:

gcc file.c -lm

здесь, -l используется для упоминания того, что мы собираемся связать библиотеку -lm указывает связать библиотеку 'm' (или математику).

Подробнее читайте о компоновщиках.

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