シェルスクリプトをコンパイルできるshcで遊んでみた
使うことはないかもしれない。でも面白いです。
shcをインストール
$ sudo apt-get install shc
なかったらソースをダウンロードしてコンパイルしてください。
$ wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz $ tar xvzf shc-3.8.7.tgz $ cd shc-3.8.7/ $ make
shcでコンパイル
テストで /usr/bin/ldd を使用。 なんで lddってshell script ってイメージがないんだろう。
$ file /usr/bin/ldd /usr/bin/ldd: Bourne-Again shell script text executable $ cp -p /usr/bin/ldd . $ ./shc -v -r -T -f ./ldd shc shll=bash shc [-i]=-c shc [-x]=exec '%s' "$@" shc [-l]= shc opts= shc: cc ./ldd.x.c -o ./ldd.x shc: strip ./ldd.x shc: chmod go-r ./ldd.x $ file ./ldd.x ./ldd.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped $ ./ldd.x /bin/ls linux-vdso.so.1 => (0x00007fff0d9ff000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2ed8878000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2ed8670000) libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f2ed8467000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2ed80d3000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2ed7ecf000) /lib64/ld-linux-x86-64.so.2 (0x00007f2ed8a9f000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2ed7cb0000) libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f2ed7aab000)
foo.x.c というCのソースができるので、中身を眺めてみるのもオツなものです。