123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- This is a development environment for ELKS-86 and standalone 8086 code.
- All you need to do is 'make' from the top directory and the main parts
- of the package will be made. These can be tested by using the 'ncc'
- program from the newly created bin subdirectory. (ncc is a varient of
- the bcc driver program that doesn't need to be installed to be used).
- Use 'make install' to install them.
- Some other bits can be built by 'make other' and installed with
- 'make install-other'.
- Note the the make files for the libraries can only be run using
- GNU-make but version 3.82 has a bug (No. 30612) that prevents this
- working properly.
- If you want it to install under /usr/local instead you can specify
- the prefix on the first make ie: 'make PREFIX=/usr/local' this is
- remembered until 'make.fil' is rebuilt.
- The manual pages in the man subdirectory are matched to these programs,
- there are also some hints for using as86 well. The tests and bootblocks
- directories give some example code.
- The bcc command defaults to using /usr/lib/bcc/include and /usr/lib/bcc
- the libraries _and_ include files are copied to these locations by
- install. This can be changed by overriding 'PREFIX=/usr/...' or
- 'LIBDIR=/usr/...' on the initial make. Also available in the
- same way are the BINDIR, INCLDIR, ASLDDIR, MANDIR and ELSESRC.
- The 'ELKSSRC=/usr/src/elks' variable can be altered if you have ELKS on
- path different from the default or ELKSSRC=/dev/null uses the supplied
- ELKS headers. The ASLDDIR variable can be used to move as86 and ld86
- into the LIBDIR with 'ASLDDIR=$(LIBDIR)'. The final '/include' is added
- to the end of INCLDIR.
- In the unlikely event you're makeing a non-cross development environment
- you can, on the initial make, do "make PREFIX=/' to have the libraries
- and include files in 'Native' locations.
- Note: These prefix options only effect the 'bcc.c' driver program and
- the install scripts, all the others get their paths from bcc.c.
- The ELKSSRC location can, however, greatly effect how the ELKS
- libraries are built.
- If you don't want to install in the locations specified above there
- is also a DIST= argument to make install that is used to specify the
- distribution root to install to.
- The last option is not to install at all. All the executables in the
- bin directory can be moved to whereever you wish except for bcc and ncc.
- To use bcc at any other location you can create a symlink from your
- new location to the 'ncc' executable and it will be able to find
- the libraries in the build directory:
- eg:
- cp ar86 elksemu objdump86 $HOME/bin/.
- cp as86 as86_encap ld86 $HOME/bin/. # Optional.
- ln -s `pwd`/ncc $HOME/bin/bcc
- All the versions of the library are built by make; 'normal', 'fast',
- 'MSDOS', 'standalone' and Linux-i386.
- You use the other libraries like this:
- 'FAST' $ bcc -Mf prog.c -o prog
- Caller saves $ bcc -Mc prog.c -o prog
- MSDOS $ bcc -Md prog.c -o prog.com
- Standalone $ bcc -Ms prog.c -o prog.sys
- Linux-i386 $ bcc -Ml prog.c -o prog
- The 'Fast' and 'Caller saves' versions alter the function call assember
- in an effort to make it smaller and faster.
- The 'MSDOS' version creates _small_ model (64k+64k) COM files. Because
- of DOS limitations the filesize is limited to about 65000 bytes but
- the BSS and Stack can be upto 64k on top of that.
- The 'standalone' version creates executables like normal ELKS a.out
- files but with no operating system calls, just BIOS ones. These
- files are suitable for running on a bare machine started by one of
- the boot blocks in the bootblocks subdirectory. If you add a '-d'
- option to the link stage the a.out header will be removed.
- The Linux-i386 version generates static Linux OMAGIC a.out programs,
- they need neither elksemu nor a.out shared libraries to run. Unfortunatly
- these can no longer be converted to ELF executables as Linux will not
- execute unpageable ELF executables. To allow conversion to ELF if you
- pass the '-z' flag to 'bcc -Ml' the linker will now create QMAGIC a.out
- executables, these are somewhat larger but can be converted with objcopy.
- If you want to install everything in one go just login as root an do:
- $ make install-all
- The as86 and ld86 with this are _different_ from the minimum version
- needed for the linux-i386 kernel and can replace them, versions before
- 0.12.0 will not work with this version of bcc.
- I suggest you install the kernel patch or load the module to allow
- transparent execution of elks executables. If you're using a post
- 2.1.43 or 2.0.36 kernel the only module you need is the binfmt_misc
- driver configured like this:
- echo ':i86-elks:M::\x01\x03\x20\x00:\xff\xff\xff\x83:/usr/bin/elksemu:' \
- > /proc/sys/fs/binfmt_misc/register
- The elksemu executable must be stored in /usr/bin/elksemu or the above
- line adjusted.
- Previous kernel versions need a special module or patch described in
- elksemu/README (All the options need the elksemu executable installed
- correctly)
- Copyrights
- ----------
- The `bcc', 'as' and `ld' parts of the distribution are now covered by
- the GPL. The `bccfp' library now in the libc/i386fp directory is under
- the LGPL. (Primary copyright holder Bruce Evans)
- The contents of the libc and libbsd subdirectories are under the LGPL
- with a few noted exceptions. The programs in 'tests', elksemu, copt
- and the bootblocks directory are under the GPL. Dis88 is freely
- distributable if the source is distributed also. Unproto is freely
- distributable as long as Wietse Venema <wietse@wzv.win.tue.nl> and the
- "Mathematics and Computing Science Dept. Eindhoven University of
- Technology. The Netherlands." is given credit.
- In libc the regular expression routine and the printf/scanf functions are
- not under LGPL, the former is 'freely distributable' the latter is public
- domain.
- See the COPYING file in this directory for the GPL and the COPYING file
- in the libc directory for the LGPL.
- --
- Rob. (Robert de Bath <robert$@debath.co.uk>)
|