Converting bunch of shared objects and a shared-lib ELF executable to one statically linked blob is not straight-forward.
The executable archive you mentioned might be possible. Assuming that by 'executable archive' you meant a file that when run un-zips itself and runs a program without dependencies on other files on the system.
This can be done quite simply using shell script and bunch of utilities found in most linux distros (However it adds dependencies on shell and the utilties). Making an ELF 'executable archive' might be much more involved although the principles are the same. If you expect your version of the program to be executed frequently, you should modify the script to 'install' it on to the users system as indicated by David and janneb.
An example using shell script based executable archive
Collect the files you need for the execution, an example using cat program would
have the following:
fachas_cat_files/cat
fachas_cat_files/lib/libc.so.6
Base64 encode the tgz file and make it cat.b64, can be done like this after
setting up your fachas_cat_files directory.
tar -cz fachas_cat_files | base64 > cat.b64
This makes a representation of the tar file with printable characters so it can be included in the script.
Note down the md5sums of the files you are packaging, which you use to verify whether
the untarred files are your own or not, in the shell script.
find fachas_cat_files/ -type f -exec md5sum {} \; > cat.md5
Make a shell script like the following and name it your new "archive" program.
#!/bin/bash
TEMP_DIR=/tmp
# Check Md5sum
md5sum -c --quiet >/dev/null 2>&1 <<EOF
--- Paste contents of cat.md5 here. ---
EOF
# Untar from base64 encoded tarball.
test $? -eq 0 || base64 -d <<EOF | tar -xz -C ${TEMP_DIR}
--- Paste contents of cat.b64 here. ---
EOF
# Execute the binary.
LD_LIBRARY_PATH=${TEMP_DIR}/fachas_cat_files/lib/ ${TEMP_DIR}/fachas_cat_files/cat $*
# Optionally remove the temporary files, if you do, the whole md5sum set of steps is
# not necessary.
# rm -fr ${TEMP_DIR}/fachas_cat_files