Remember, as I stated earlier, we want to build everything as static binaries. This usually requires that we make some changes to the build process or invoke special switches for the config process.

Extract your BASH source archive in your /scratch directory. From /scratch execute “tar xvzf /scratch/bash-xxxxx.tar.gz” This assumes you have placed the archive in /scratch. If not, simply point to the correct location and extract the archive while in /scratch.

In the case of BASH, we have to execute the following switches during the configure process.

Change to your bash src directory. In my case. “cd /scratch/bash-3.2/”

Then execute the following command.. ./configure –enable-static-link –without-bash-malloc

Once the configure process is complete, and provided there were no errors. Execute the following commands.

make clean



Again, provided there were no errors during the build process you should be left with a file in /scratch/bash-3.2/ named “bash”.

Verify that it was built statically by executing the following command. file /scratch/bash-3.2/bash ( Fully path it to make sure it doesn't pick up on anything else. )

Your output should look like this. [root@demo bash-3.2]# file /scratch/bash-3.2/bash /scratch/bash-3.2/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, not stripped

If it looks like this, you must figure out what has gone wrong. It is more trouble than it's worth. ( IMH0 ) To build a bunch of dynamically linked packages that you have to find all the libs for.

/scratch/bash-3.2/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped ←- THIS IS BAD!

QR Code
QR Code appnotes:bash_-_build_instructions (generated for current page)