1Basic Dropbear build instructions: 2 3- Edit options.h to set which features you want. 4- Edit debug.h if you want any debug options (not usually required). 5 6(If using a non-tarball copy, "autoconf; autoheader") 7 8./configure (optionally with --disable-zlib or --disable-syslog, 9 or --help for other options) 10 11Now compile: 12 13make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 14 15And install (/usr/local/bin is usual default): 16 17make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install 18 19(you can leave items out of the PROGRAMS list to avoid compiling them. If you 20recompile after changing the PROGRAMS list, you *MUST* "make clean" before 21recompiling - bad things will happen otherwise) 22 23See MULTI for instructions on making all-in-one binaries. 24 25If you want to compile statically, add "STATIC=1" to the make command-line. 26 27Binaries can be strippd with "make strip" 28 29============================================================================ 30 31If you're compiling for a 386-class CPU, you will probably need to add 32CFLAGS=-DLTC_NO_BSWAP so that libtomcrypt doesn't use 486+ instructions. 33 34============================================================================ 35 36Compiling with uClibc: 37 38Firstly, make sure you have at least uclibc 0.9.17, as getusershell() in prior 39versions is broken. Also note that you may get strange issues if your uClibc 40headers don't match the library you are running with, ie the headers might 41say that shadow password support exists, but the libraries don't have it. 42 43Compiling for uClibc should be the same as normal, just set CC to the magic 44uClibc toolchain compiler (ie export CC=i386-uclibc-gcc or whatever). 45You can use "make STATIC=1" to make statically linked binaries, and it is 46advisable to strip the binaries too. If you're looking to make a small binary, 47you should remove unneeded ciphers and MD5, by editing options.h 48 49It is possible to compile zlib in, by copying zlib.h and zconf.h into a 50subdirectory (ie zlibincludes), and 51 52export CFLAGS="-Izlibincludes -I../zlibincludes" 53export LDFLAGS=/usr/lib/libz.a 54 55before ./configure and make. 56 57If you disable zlib, you must explicitly disable compression for the client - 58OpenSSH is possibly buggy in this regard, it seems you need to disable it 59globally in ~/.ssh/config, not just in the host entry in that file. 60 61You may want to manually disable lastlog recording when using uClibc, configure 62with --disable-lastlog. 63 64One common problem is pty allocation. There are a number of types of pty 65allocation which can be used -- if they work properly, the end result is the 66same for each type. Running configure should detect the best type to use 67automatically, however for some systems, this may be incorrect. Some 68things to note: 69 70 If your system expects /dev/pts to be mounted (this is a uClibc option), 71 make sure that it is. 72 73 Make sure that your libc headers match the library version you are using. 74 75 If openpty() is being used (HAVE_OPENPTY defined in config.h) and it fails, 76 you can try compiling with --disable-openpty. You will probably then need 77 to create all the /dev/pty?? and /dev/tty?? devices, which can be 78 problematic for devfs. In general, openpty() is the best way to allocate 79 PTYs, so it's best to try and get it working. 80