10.7.1 Созданий программ для uClinux

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

Исполняемым файлом в uClinux является двоичный файл формата "flat". Обычный файл ELF не поддерживается на uClinux. Набор инструментов для uClinux предоставляет специальную программу для преобразования файла ELF в файл bFLT. Не все файлы ELF могут быть преобразованы в BFLT. Для этого сгенерированный код должен быть позиционно независимым. uClinux имеет два варианта позиционно-независимых двоичных файлов: полностью перемещаемые двоичные файлы и двоичные файлы PIC. Список команд компилятора для создания разных форм файла bFLT, использующих набор инструментов m68k, приведён ниже.

 

Создание полностью перемещаемых двоичных файлов

 

Компилируем файл. Это создаст sample.o.
 
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 -c -o sample.o sample.c
 

Компонуем и создаём файл "flt". Этот шаг создаст исполняемый файл sample и файл символов sample.gdb.
 
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 -Wl,-elf2flt -Wl,-move-rodata -nostartfiles
/home/sriramn/work/uclinux/uClinux-dist/lib/crt0.o
-L/home/sriramn/work/uclinux/uClinux-dist/lib o sample
sample.o -lc

 

Создание двоичных файлов PIC

 

Компилируем файл.
 
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 -msep-data -c -o sample.o sample.c
 

Компонуем и создаём файл "flt".
 
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 -msep-data -Wl,-elf2flt -Wl,-move-rodata
-nostartfiles
/home/sriramn/work/uclinux/uClinux-dist/lib/crt0.o
-L/home/sriramn/work/uclinux/uClinux-dist/lib -o testhw1
sample.o -lc
 

Обратите внимание, что -msep-data заставляет выполнить -fPIC внутренне. А -elf2flt, передаваемая компоновщику, заставляет выполнить преобразование из формате ELF в bFLT. Кроме того, -msep-data включает XIP.
 

Чтобы изменить размер стека файла bFLT, используем команду
 
elf2flt –s <stack _size> test.flt
 

Чтобы сжать файл (всё кроме заголовков), используем
 
elft2flt –z –o test.flt test.elf

 

Сжатые образы не являются доступными для исполнения на месте, так как перед исполнением они должны быть распакованы в ОЗУ.

 

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