addr2line , ar , as , ld from the binutils package. Here is an example of the code and commands used for the as and ld example:
$ cat << EOF >> hello.c
include
int main(void) { printf("hello world\n"); return 0; } $ cpp hello.c > hello.i $ gcc -S hello.i $ as -o hello.o hello.s $ ld -static -o hello \ -L/usr/lib64/gcc/x86_64-slackware-linux/5.5.0/ \ /usr/lib64/crt1.o /usr/lib64/crti.o hello.o \ /usr/lib64/crtn.o --start-group -lc -lgcc \ -lgcc_eh --end-group $ ./hello hello world $
The library paths are specific to Slackware, but are similar on other distributions.
shasum -a256=6b756396aaeff3d3d9cba36761dab48a46c1c5847b0867979a6bb6dc4d19ed34