Создание динамической библиотеки. 1 способ: Для того, чтобы добавить нашу директорию с библиотекой в список известных директорий надо изменить файл /etc/ld.so.conf. # cat /etc/ld.so.conf /usr/X11R6/lib


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте файл и откройте на своем компьютере.
Статические и динамические библиотеки Преподаватель: Ст. преп. Кафедры ВС, Перышкова Евгения Николаевна ПРОГРАММИРОВАНИЕ Создание объектных файлов Одной командой: # gcc - c main.c f1.c f2.c Каждый файл отдельно: # gcc - c f1.c # gcc - c f2.c # gcc - c main.c Результат: main.o f1.o f2.o Сборка в исполняемый файл Одной командой: # gcc main.o f1.o f2.o - o rezult Результат и вызов: #./ rezult Библиотека объектных файлов Файл содержащий несколько объектных файлов, которые будут использоваться вместе в стадии линковки программы . Объектные библиотеки по способу использования разделяются на два вида : • Статические библиотеки • Динамические библиотеки Статическая библиотека Коллекция объектных файлов, которые присоединяются к программе во время линковки программы . Таким образом статические библиотеки используются только при создании программы . Динамическая библиотека Созданная специальным образом библиотека, которая присоединяется к результирующей программе в два этапа . На первом этапе линковщик встраивает в программу описания требуемых функций и переменных, которые присутствуют в библиотеке . Присоединение объектных файлов осуществляет системный динамический загрузчик во время запуска программы . Создание статической библиотеки Для создания статических библиотек существует специальная простая программа называемая ar (сокр . от archiver - архиватор) . Она используется для создания, модификации и просмотра объектных файлов в статических библиотеках, которые в действительности представляют из себя архивы . ar rc lib имя_библиотеки . a [ список_ *. o_ файлов] # ar rc libfs.a f1.o f2.o Создание статической библиотеки Пока у нас есть лишь архивный файл libfs.a . Чтобы из него сделать полноценную библиотеку объектных файлов надо добавить к этому архиву индекс символов, т.е. список вложенных в библиотеку функций и переменных. # ranlib lib имя_библиотеки . a Создание статической библиотеки Каталог с библиотеками указывается ключом - L , в нашем случае библиотека находится в текущем каталоге, значит путь до нее будет в виде точки ( - L. ). Используемые библиотеки перечисляются через ключ - l , после которого указывается название библиотеки без префикса lib и окончания . a . # gcc main.c - L. - lfs - o rezult Создание динамической библиотеки Генерируемый компилятором код должен быть независимым от адресов, такая технология получила название PIC - Position Independent Code . В компиляторе gcc данная возможность включается ключом - fPIC # gcc - fPIC - c f1.c # gcc - fPIC - c f2.c Создание динамической библиотеки Динамическая библиотека это уже не архивный файл, а настоящая загружаемая программа, поэтому созданием динамических библиотек занимается сам компилятор gcc . # gcc - shared - o libfsdyn.so f1.o f2.o Создание динамической библиотеки чтобы компилировать результирующий файл с использованием динамической библиотеки нам надо собрать файл командой # gcc - с main. с # gcc main.o - L. - lfsdyn - o rezultdyn Создание динамической библиотеки #./ rezultdyn ./ rezultdyn : error in loading shared libraries: libfsdyn.so : cannot open shared object file: No such file or directorydron :/ Это сообщение выдает загрузчик динамических библиотек(динамический линковщик - dynamic linker ) Создание динамической библиотеки Для настройки динамического линковщика существует ряд программ. Первая программа называется ldd . Она выдает на экран список динамических библиотек используемых в программе и их местоположение. В качестве параметра ей сообщается название обследуемой программы. # ldd rezultdyn libfsdyn.so �= not found libc.so.�6 = /lib/libc.so.6 (0x40016000) /lib/ld - linux.so�.2 = /lib/ld - linux.so.2 (0x40000000) Создание динамической библиотеки 1 способ: Для того, чтобы добавить нашу директорию с библиотекой в список известных директорий надо изменить файл / / ld.so.conf . # cat /etc/ ld.so.conf / usr /X11R6/lib / usr /i386 - slackware - linux/lib / usr /i386 - slackware - linux - gnulibc1/lib / usr /i386 - slackware - linux - gnuaout/lib Создание динамической библиотеки после изменения конфигурационного файла ld.so.conf необходимо, чтобы система перечитала настройки заново. Это делает программа ldconfig # ldconfig Создание динамической библиотеки 2 способ: Специальная переменная среды LD_LIBRARY_PATH , в которой перечисляются все каталоги содержащие пользовательские динамические библиотеки. Для того, чтобы установить эту переменную в командной среде bash надо набрать всего несколько команд. Для просмотра переменной среды: # echo $LD_LIBRARY_PATH Создание динамической библиотеки #LD_LIBRARY_PATH=/root #export LD_LIBRARY_PATH Если в системе эта переменная среды уже установлена, то надо новый каталог прибавить к старому значению. Делается это другой командой: #LD_LIBRARY_PATH=/root:${LD_LIBRARY_PATH} #export LD_LIBRARY_PATH

Приложенные файлы

  • pdf 6992414
    Размер файла: 406 kB Загрузок: 0

Добавить комментарий