10.7.2 Создание совместно используемых библиотек для uClinux |
Предыдущая Содержание Следующая |
Совместно используемые библиотеки в uClinux представляют собой обычные файлы bFLT, созданные с помощью специальных флагов компилятора. Флаги компилятора помогают определить символьные ссылки с помощью фиксированного числа ID библиотеки. Шаги, необходимые для создания и использования разделяемых библиотек, перечислены ниже. В этом примере, чтобы создать общую библиотеку libtest, мы используем a.c и b.c.
Файл: a.c
void a() { printf("I am a\n"); }
Файл: b.c
void b() { printf("I am b\n"); }
▪Компилируем каждый файл. Обратите внимание, что используется флаг -mid-sharedlibrary. ▪Создаём архив. ▪Создаём двоичный файл типа "flat" с необходимым идентификатором библиотеки (здесь мы используем 2, libc имеет id =1). Обратите внимание на добавление файла uClibc/lib/main.o для пустой функции main и опцию -shared-lib-id=2. ▪Удаляем символы запуска. Так как должна быть возможность использовать библиотеку с другим приложением, символы запуска, добавляемые через среду исполнения языка Си, такие как _main, _start и тому подобные, должны быть удалены. Это делается с помощью следующей команды. ▪Устанавливаем эту библиотеку в rootfs под соответствующим именем.
Чтобы проанализировать созданные символы, выполним для этого символьного файла nm.
#nm libtest.gdb | sort 0100001c A __assert 01000098 A isalnum 010000b8 A isalpha 010000d8 A isascii … … 010355c4 A __ti19__pointer_type_info 010355d0 A __ti16__ptmd_type_info 010355dc A __ti19__builtin_type_info 020000cc T a 020000e4 T b 02000100 D __data_start 02000100 D data_start
Обратите внимание на наличие символов 01xxxxxx из libc (lib1.so) и символы нашей библиотеки lib2.so, начинающиеся с 02xxxxxx.
|
Предыдущая Содержание Следующая |