скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Администрирование локальных сетей

Библиотеки называються libname.sfx

Name – название библиотеки, которая идентефецирует библиотеку

Sfx -  если .а – архив, .sl – общедоступная библиотека.

Для того что б указать  компилятору библиотеку то указываеться через опцию –l. Например

--lm (подключает стандартну математическую библиотеку libm.a).

По умолчанию подключаються библиотеки libcl,libisamstub,libc.

По умолчанию библиотеки ищатся по путям /lib,/usr/lib,lib/libp. Можно задать пути где искать:

1)    Переменой коружения LPATH

2)    Опция линкера -L

Также для каждой програмы входит обьектный файл /lib/crt0.o В этом файле содержаться таочки входа в програму,простомтр аргументов и прочее.

Можна прочитать о фунциях которые есть в стандартных библиотеках исполюзую man-page

Вызовы (функции) описываються следующим образом

Name(nL)

Name – название

N – 2-системные вызовы, 3-другие библиотеки

L – буква которая означает к которой библиотеке вызов относиться

Вот примеры:

Група Описание
(2)

Системные вызовы, низкоуровневый доступ до системных ресурсов. (работа с файлами,сигналы,управление процесами). Все вызовы содержаться в libc

(3C)

Стандартные С вызовы . Находяться в libc

(3S)

Стандартные вызова input/output (stdio(3S)) Находяться в libc

(3M) Математические фунции. Для подключения используеться –lm или -lM
(3G) Графические фунции
(3I) Библиотека инструментариев
(3X) Разные специализированые библиотеки
Сравнительные оценки Архивных и Общедоступных библиотек
Расширение .a .sl
Обьектный код Делаеться с обьектного кода Делаеться с независимо-позиционого (PIC) обьектного кода.Делаеться компилятором с опцией +z или +Z.
Создание

Составляеться обьектные файлы ar  командой

Составляеться PIC обьекты с ld командой
Связывание адресса вызова Адресс определяется при линкировании програмы Адресс определяеться при выполнении програмы
a.out Содержит в себе все вызовы и даные Содержит только таблицу где где содержаться адреса иназвание библитек
При запуске Каждая програма содержит собственую копию библиотеки Все програмы используют одну бублиотеку, которая в памяти присутствующая только один раз

Опции компилятора cc

cс [option] files

·     -Amode

·     mode=c По умолчанию, стандартный компилятор С (по Керниган,  Риттчи)

·     mode=a ANSI C  (ISO 9899:1990)

·     mode=e Расшириное ANSI C

·     -c   Отменить фазу редактирования связей и создавать об'ектный файл даже в случае программы, состоящей только из одного модуля.

·     -p Сгенерировать дополнительные команды для подсчета числа обращений к каждой функции. Кроме того, если имеет место фаза редактирования связей, стандартная подпрограмма инициализации заменяется на такую, которая автоматически вызывает функцию monitor(3C) и обеспечивает запись файла mount.out при нормальном завершении об'ектной программы. Профиль выполнения программы может быть затем получен при помощи команды prof(1).

·     -Dname=def определяет макрос для препроцесорра (эквивалентно #define )

·     -E посылает на стандартный поток вывода (по умолчанию на stderr)

·     -g содержит дополнительную информацию для  отладки

·     -Idir Изменить алгоритм поиска включаемых (посредством директивы #include) файлов, имена которых не начинаются с символа /, а именно: сначала искать в указанном каталоге, а затем уже в каталогах стандартного списка. Так, включаемые файлы, чьи имена заданы в двойных кавычках, сначала ищутся в каталоге, содержащем файл, затем в каталогах, указанных с помощью опции -I, а затем уже в каталогах стандартного списка. Включаемые файлы, чьи имена заданы в угловых скобках, не ищутся в каталоге, содержащем файл.

·     -lname включает библиотеку

·     -L dir dir= Дополнить каталогом список каталогов, которые содержат об ектные библиотечные модули [для редактирования связей посредством ld

·     -v расширынай информация о процессе компиляции

·     -w не показывает предупреждений

·     -Wx,arglist передает аргументы (опции) arglist  для процеса. x

может принимать значения:

·     d    Driver

·      p    Preprocessor

·      c    Compiler

·      a    Assembler

·       l    Linker

·     +z,+Z  Опция создает  PIC код

·     -O Включить оптимизацию обьектного кода

           

Создание архивной библиотеки. 

1)    Для открытия библиотеки необходимо создать оььектные файлы. (в основном каждая функция представляет свой обьектный файл)

2)    Соеденить все обьекты в один архив командой ar с ключем r

Описание команды ar

  ar  [-][d][r][q][t][p][m][x][v][c][l][s] [позиционирующее_имя]

  а_файл [имя ...]

Команда ar предоставляет средства обслуживания группы файлов, об единенных в один архивный файл. Применяется главным образом для создания и изменения библиотечных файлов, используемых редактором связей. Может применяться и для других подобных целей. Магические цепочки и заголовки файлов состоят из печатаемых ASCII-символов, так что если в состав архива входят только печатаемые файлы, то и архив в целом окажется печатаемым.

При создании архива командой ar заголовки файлов строятся в формате, не зависящем от конкретной машины. Формат и структура мобильного архива подробно описаны в ar(4). Таблица имен архива (описанная там же) используется редактором связей [ld(1)] для сокращения числа проходов по библиотекам об ектных файлов. Команда ar создает и поддерживает таблицу имен только при наличии в архиве хотя бы одного об ектного файла. Таблица имен в случае ее создания помещается в начале архива в качестве файла с особым именем. Ни ссылка на этот файл, ни доступ к нему для пользователя невозможны. При создании или изменении архива командой ar(1) таблица имен всякий раз перестраивается. Таблицу имен можно перестроить принудительно, воспользовавшись описанной ниже опцией s.

В отличие от командных опций командный ключ составляет обязательную часть командной строки ar. Ключ (которому может предшествовать символ -) представляет собой один из символов набора drqtpmx. Аргументами же ключа могут служить один или несколько символов из набора vuaibcls. Позиционирующее_имя - это имя элемента архива, которое используется в качестве указателя конкретного места архива, куда должны помещаться другие файлы. А_файл - это имя архивного файла. Под именами подразумеваются имена файлов, входящих в архив. Символам, образующим ключ, приписан следующий смысл:

d Удалить указанные файлы из архива.
r Заменить указанные файлы в архиве. Если в ключе наряду с r присутствует необязательный символ u, то замена будет произведена только для тех из указанных файлов, у которых дата последней модификации превышает соответствующую дату у одноименных файлов, хранящихся в архиве. Если ключ содержит признак позиционирования, т.е. один из необязательных символов abi, то в команде должен присутствовать аргумент позиционирующее_имя и в этом случае все новые файлы будут помещаться перед (b или i) или вслед за (a) файлом с таким именем. При отсутствии признака позиционирования новые файлы будут помещаться в конец архива.
q Быстро поместить указанные файлы в конец архива. Использование символов позиционирования недопустимо. Проверка, имеются ли уже в архиве указанные файлы, командой не осуществляется. Данная возможность полезна только для того, чтобы избежать квадратичного роста временных затрат при наращивании больших архивов. Отказ от проверок может, напротив, повести к росту размеров архивного файла.
t Вывести оглавление архива. Если имена не указаны, перечисляются все файлы архива; если имена указаны, выводятся только они.
p Напечатать указанные файлы из архива.
m Переместить указанные файлы в конец архива. Если ключ содержит признак позиционирования, то в команде должен присутствовать аргумент позиционирующее_имя, и тогда место, куда перемещаются файлы, будет определяться так же, как и для опции r.
x Извлечь указанные файлы из архива и поместить в текущий каталог. Если имена не указаны, извлекаются все содержащиеся в архиве файлы. Операция не изменяет архивный файл.

Аргументам ключа приписан следующий смысл:

v Вывести подробное, файл за файлом, описание процедуры создания нового архивного файла из старого архива и указанных в команде файлов-компонентов. При совместном использовании ключа t и аргумента v выводится подробная информация о каждом файле. При совместном использовании x и v по мере извлечения файлов будут выводиться их имена.
c Подавить сообщение, выдаваемое обычно при создании а_файла.
l Помещать временные файлы в локальный (текущий рабочий) каталог, а не в подразумеваемый временный каталог TMPDIR.
s Принудительно регенерировать таблицу имен архива, даже если вызов не предусматривает модификации содержимого архива. Эта команда полезна при восстановлении таблицы имен после применения к архиву команды

Открытие Библиотек Распределеного доступа

Первый шаг в создание общедоступной библиотеки должен создать объектные файлы,

cодержащий переместимый код (PIC). Имеются два способа создать

PIC объектные файлы:

·     Компилировать исходные файлы с + z или + Z опция компилятора, описанная      ниже.

·     Записать программы на языке ассемблера, которые используют соответствующее адресование режимы

·    

+ z и + Z параметры вынуждают компилятор генерировать PIC объектные файлы.

Пример

Предположите, что Вы имеете некоторые функции C, сохраненные в length.c, которые конвертируют(преобразовывают) между Английскими и Метрическими модулями длины. Для компилиции эти подпрограммы и создайние PIC объектных файлов с компилятором C, Вы можете бы использовать эту команду:

     $ cc -Aa -c +z length.c

+z опция создает PIC.

Создание Общедоступной Библиотеки с ld

Чтобы создавать общедоступную библиотеку от одного или большее количество PIC объектные файлы, используйте линкер ld, с -b опцией. По умолчанию, ld назовет библиотеку а.out. Вы можете изменять название с -o опцией.

Например, предположите, что Вы имеете три исходных файла C, содержащие подпрограммы, чтобы делать длину, объем, и массовые преобразования модуля. Они названы length.c, volume.c, и mass.c, соответственно. Делать общедоступную библиотеку от этих исходных файлов, сначала компилируют все три файла, использующие +z опцию, затем комбинируют заканчивающиеся .o файлы с ld. Показаны ниже команды, которые Вы использовали бы, чтобы создать общедоступную библиотеку, названную libunits.sl:

 $ cc -Aa -c + z length.c volume.c mass.c

  length.c:

  volume.c:

  mass.c:c:    

 $ ld -b -o libunits.sl length.o volume.o mass.o

Как только библиотека создана, убедитесь наличия прав читения и выполнения.Но можна выставить права такой командой

 $ chmod +r+x libunits.sl

Например, если Вы имеете программу c названным convert.c, который вызываетподпрограммы с libunits.sl, Вы могли бы компилироватьИ связь это с командой cc:

     $ cc -Aa convert.c libunits.sl

Как только выполнимая программа создана, библиотека не должна быть перемещена потому что

абсолютное имя пути библиотеки сохранено в выполнимой программе

Модифицирование Общедоступной Библиотеки

Команда ld не может заменять или удалять объектные модули в общедоступной библиотеке. Поэтому, чтобы модифицировать общедоступную библиотеку, Вы должны повторно  связать библиотеку со всеми объектными файлами, которые Вы хотите, чтобы  библиотека включила. Например, предположите, что Вы устанавливаете некоторые подпрограммы в length.c (от предыдущего раздела) которые давали неправильные результаты. Чтобы модифицировать libunits.sl библиотеку, чтобы включить эти изменения(замены), Вы использовали бы этот ряд команд:д:

     $ cc -Aa -c + z length.c

     $ ld -b -o libunits.sl length.o volume.o mass.o

Любые программы, которые используют эту библиотеку, будут теперь использовать новые версии подпрограмм. То есть Вы не должны повторно  связать никакие программы, которые используют эту общедоступную библиотеку. Это - то, потому что подпрограммы в библиотеке приложены к программе во время выполнения.я.

Это - одно из преимуществ общедоступных библиотек по библиотекам архива: если Вы изменяете(заменяете) библиотеку архивов, Вы должны повторно  связать любые программы, которые используют библиотеку архивов. С общедоступными библиотеками, Вы должны только освежить библиотеку.

Применение make

Создание программы частенько начинается с маленького однофайлового проекта. Проходит некоторое время и проект, как снежный ком, начинает обрастать файлами, заголовками, подключаемыми библиотеками, требуемыми опциями компиляции... и для его сборки становится уже недостаточным сказать "cc -o file file.c". Когда же, через пару дней, однажды набранная магическая строчка, содержащая все необходимые для сборки проекта параметры компилятора, таинственно исчезает в недрах истории вашего командного интерпретатора, рождается естественное желание увековечить свои знания в виде, к примеру, шелл скрипта. Затем, возможно, захочется сделать этот скрипт управляемым параметрами, чтобы его можно было использовать для разных целей... Однако, чудо юникса состоит в том, что если вам что-то понадобилось, значит кто-нибудь это уже сделал, и пришло время вспомнить о существовании команды make.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.