The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

10.7.3 Использование совместно используемой библиотеки в приложении

10.7.3 Использование совместно используемой библиотеки в приложении

Предыдущая  Содержание  Следующая V*D*V

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

 

Файл: use.c

 

extern void a();

extern void b();

 

main()

{

  a();

  b();

}

 

Компилируем use.c (обратите внимание на shared-library-id=0).
 
m68k-elf-gcc -m68000 -Os -g -fomit-frame-pointer -m68000
-fno-common -Wall -Dlinux -D__linux__ -Dunix
-D__uClinux__ -DEMBED -nostdinc
-I/home/sriramn/work/uclinux/uClinux-dist/include
-I/home/sriramn/work/uclinux/uClinux-dist/include/include
-fno-builtin -mid-shared-library -mshared-library-id=0 -c
-o use.o use.c
 

Связываем (компонуем) use.c с libc и libtest.
 
m68k-elf-gcc -m68000 -Os -g -fomit-frame-pointer -m68000
-fno-common -Wall -Dlinux -D__linux__ -Dunix
-D__uClinux__ -DEMBED -nostdinc
-I/home/sriramn/work/uclinux/uClinux-dist/include
-I/home/sriramn/work/uclinux/uClinux-dist/include/include
-fno-builtin -mid-shared-library -mshared-library-id=0
-Wl,-elf2flt -Wl,-move-rodata -Wl,-shared-lib-id,0
-nostartfiles
/home/sriramn/work/uclinux/uClinux-dist/lib/crt0.o
-L/home/sriramn/work/uclinux/uClinux-dist/lib -L. -o use
use.o -Wl,-R,
/home/sriramn/work/uclinux/uClinux-dist/lib/libc.gdb -lc
-Wl,-R,libtest.gdb -ltest

 

И снова для use.gdb выполняем nm, чтобы увидеть наличие библиотеки.

 

#nm use.gdb | sort

  00000004 T _stext

  00000008 T _start

  00000014 T __exit

  0000001a t empty_func

  0000001c T main

    …

    …

  00000260 B end

  00000260 B _end

  0100001c A __assert

  01000098 A isalnum

  010000b8 A isalpha

  010000d8 A isascii

  010000ec A iscntrl

    …

    …

  010355d0 A __ti16__ptmd_type_info

  010355dc A __ti19__builtin_type_info

  020000cc A a

  020000e4 A b

 

После понимания шагов, необходимых для создания программ для uClinux, перед переносом приложений из стандартного Linux для uClinux, вы также должны понять различные ограничения uClinux.

 

Предыдущая  Содержание  Следующая