4.12 �������ļ���ʽ

����Ҫ����Ϊʲô FreeBSD ʹ�� elf(5) ��ʽ�� �����������˽�һЩ UNIX® ϵͳ�е� ���� ����Ҫ�� ��ִ���ļ���ʽ���й�֪ʶ��

����FreeBSD�ӡ����䡱��Ӫ���������ʹ����a.out(5)��ʽ�� �ڶ�BSD�汾�ķ���(ֱ��3.X��֧�Ŀ�ʼ)Ҳ֤�������ָ�ʽ����Ч�ԡ� ��Ȼ������ǰ��ij��ʱ�䣬��FreeBSDϵͳ�ϴ���������ELF��ʽ �Ķ����ƿ�ִ���ļ�(���ں�)Ҳ�ǿ��ܵģ���FreeBSDһ��ʼ���������������� ��ʹ��ELF��Ϊ��ȱʡ�ĸ�ʽ��Ϊʲô���ޣ���Linux��Ӫ����� ת����ELF��ʽ��ʹ�����̺�ȴ���ֲ��������ɴ˶����� a.out��ִ���ļ���ʽ����Ϊ�����������Dz����ģ� ������ת���Ĺ�������ƣ�ʹ�������̺Ϳ������ǹ���������dz����ѡ� ֱ�����е�ELF�����ṩ��һ�ֽ������������İ취�� �����ձ���Ϊ�ǡ�ǰ�������Ժ�Ǩ��Ĵ�����FreeBSD��ű����ܣ� ���ɴ������Ǩ�㡣FreeBSD�Ĺ���������������������Sun SunOS™�Ĺ�������ƣ� ��������Ϊ�ˣ��������Ժܺá�

������ô��Ϊʲô������ô�಻ͬ�ĸ�ʽ�أ�

�������ݵ������ͺڰ��Ĺ�ȥ����ʱֻ�м򵥵�Ӳ�������ּ򵥵�Ӳ��֧����һ���� ��С�͵�ϵͳ���������ļ�ϵͳ��(PDP-11)a.out��ʽ ����ʤ�α���������ļ������񡣵����ǽ�UNIX�����ּ򵥵�ϵͳ����ֲ������ʱ�� a.out��ʽ����������������Ϊ�������ڽ�UNIX��ֲ�� Motorola 68k��VAXen��ϵͳ��˵���������㹻���õġ�

����Ȼ��һЩ������Ӳ������ʦ��Ϊ������������������һЩ�򵥵Ĵ��������� ��ô���ǾͿ�����Ӳ������м��������ŵ�·����������CPU�������еø��졣 ��a.out��ʽ�����������͵�Ӳ��ϵͳʱ(�������ǽ��� RISC)���Եò������ʡ���ˣ���������������µĸ�ʽ �Ա���������Ӳ��ϵͳ���ܻ�ñȼ򵥵�a.out��ʽ����Խ �����ܡ�����COFF��ECOFF���������� һЩ��ɬ�Ѷ��ĸ�ʽ����������׶α����������ģ�����Ҳ�о�����Щ��ʽ�ľ����ԣ� ������������ʵ��ELF��ʽ��

����ͬʱ������Ĵ�С���Խ��Խ�󣬴��̿ռ�(�Լ������ڴ�)�����˵ȴ��Ȼ��С�� ��˹�����ĸ��������ˡ�VMϵͳҲ���Խ��Խ�����ˡ���������Щ������������ a.out��ʽ�Ļ����ϵ�ʱ�����Ŀ���������ÿ�������� �IJ������ܵ������ؿ��顣���ң����ǻ�ϣ������������ʱ��̬װ��ijЩ���������� �ڳ�ʼ�����������Ժ���Զ������ֳ�����룬�Ա��Լ���洢���ͽ�������������� Ҳ���Խ��Խ���ӣ�����ϣ��������main()����ִ��֮ǰ�Զ�ִ��ijЩ���롣Ϊ��ʵ�� ������Щ���ܣ����Ƕ�a.out��ʽ���˺ܶ�Ķ�(hack)�� ������ij���׶������Ҳ�ǿ��еġ�����ʱ������ƣ�a.out��ʽ ���ò����Ӵ����Ĵ���͸��Ӷ���������Щ������ȻELF��ʽ ������������������⣬���Ǵ�һ�����õ�ϵͳǨ�Ƶ���һ��ϵͳȴ��ʹ��ġ���� ֱ����������a.out��ʽ�Ĵ��۱�Ǩ�Ƶ�ELF��ʽ �Ĵ��ۻ����ʱ�����DzŻ�����ת����ELF��ʽ��

����Ȼ��������ʱ������ƣ�FreeBSDϵͳ�����ı��빤��(�ر��ǻ������װ����) ���������ı��빤�ߣ��䷢չȴ�γ�������ƽ�еķ�֧��FreeBSD�����֧�����˹����⣬ ���޸���һЩ���󡣶�ԭ�ȱ�д����Щ���ߵ�GNU������д����Щ���ߣ����Խ�������ṩ�� ���򻯵�֧�֣�����������˲�ͬ��ʽ��֧�֣��ȵȡ���Ȼ�ܶ���ϣ���������FreeBSD�� �����������������ȴ��δ��Ը�Գ�����ΪFreeBSD��as ��ld��Դ�����Ϊ�Ͼɣ������޷����������� �µ�GNU������(binutils)��ȷʵ֧�ֽ�����룬ELF ��ʽ�������⣬C++��չ���ȵȡ����ң����ںܶ๩Ӧ�̶�����ELF��ʽ�� �������ļ��������FreeBSD�ܹ��������ǽ���һ���ܺõ����顣

����ELF��ʽ��a.out��ʽ����Ҫ��Щ��ͬʱҲ ��������ϵͳ�и��õ���չ�ԡ�ELF��ʽ���йع������Ÿ��õ�ά���� �����ṩ�������֧�֣������������˵�Ǻ���Ҫ�ġ�ELF��ʽ���ܻ���΢ ��һЩ�������Ѳ������������⣬��������֮�䣬������ϸ��Ҳ�Dz�ͬ�ģ���������ӳ��ҳ��ķ�ʽ�� ������ʼ������ķ�ʽ���ȵȡ�������Щ����̫��Ҫ������Ҳȷʵ�Dz�֮ͬ�����ڽ������ʵ�ʱ�� GENERIC�ں˽�����֧��a.out��ʽ�����ң� ��������Ҫ����������a.out��ʽ����ʱ���ں�Ҳ�������ṩ�����֧�֡�

���ĵ��������ĵ��ɴ��������أ�ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

�������FreeBSD�����⣬�����Ķ��ĵ����粻�ܽ������ϵ<questions@FreeBSD.org>.
���ڱ��ĵ��������뷢����ϵ <doc@FreeBSD.org>.