Changing binary name at compile time

Denys Vlasenko vda.linux at googlemail.com
Mon Nov 26 05:39:32 UTC 2007


On Sunday 25 November 2007 20:12, Brendan M. wrote:
> Hello there guys,
> I was wondering how I could change the name of the busybox binary at
> compile time.
>
> I need this because I have to make a busybox package, so i can't just
> "busybox --install" afterwards, because all the symlinks must be recorded.
>
> I just need to know how I can change the binary from busybox to
> coreutils-busybox and use 'make install' to make the links.

Run this script from a directory where your busybox binary is:

#!/bin/sh

applets=`./busybox 2>&1 \
| {
while read -r line; do
    if echo "$line" \
    | grep -F "Currently defined functions:" >/dev/null 2>&1; then
        break
    fi
done
if ! test "$line"; then exit; fi
while read -r line; do echo -n "$line "; done \
| sed "s/   */ /g" | sed "s/, / /g"
}
`
pwd=`pwd`

echo 'dir=... #directory where your busybox is'
for a in $applets; do
    echo ln -sf $pwd/busybox '$dir/'$a
done



Result on standard output:

dir=... #directory where your busybox is
ln -sf /tmp/busybox $dir/[
ln -sf /tmp/busybox $dir/[[
ln -sf /tmp/busybox $dir/addgroup
ln -sf /tmp/busybox $dir/adduser
ln -sf /tmp/busybox $dir/adjtimex
ln -sf /tmp/busybox $dir/ar
ln -sf /tmp/busybox $dir/arp
ln -sf /tmp/busybox $dir/arping
ln -sf /tmp/busybox $dir/ash
ln -sf /tmp/busybox $dir/awk
ln -sf /tmp/busybox $dir/basename
ln -sf /tmp/busybox $dir/bunzip2
ln -sf /tmp/busybox $dir/bzcat
ln -sf /tmp/busybox $dir/cal
ln -sf /tmp/busybox $dir/cat



By saving it in a file and running it as a shell script, you can create links.

Change
	echo ln -sf $pwd/busybox '$dir/'$a
to
	echo ln -sf $pwd/coreutils-busybox '$dir/'$a
and you'll get what you want.

IOW: I have no idea why busybox has --install at all,
it is trivially doable with shell scripts.
--
vda



More information about the busybox mailing list