ls
faz parte do pacote coreutils e, como tal, depende dos dois outros arquivos dentro do coreutils e das etapas de configuração. Você provavelmente poderia gastar muito tempo desenredando-a da biblioteca, mas, a menos que você esteja planejando compilar isso algumas centenas de vezes por dia, não acho que valha a pena.
Como pim disse nos comentários, você pode aprender sobre o processo completo de criação a partir de README.hacking
file na raiz da árvore do git. Eu corri o seguinte sem realmente prestar muita atenção, mas é isso que funcionou para mim.
sudo apt install git build-essential
sudo apt build-dep coreutils
git clone git://git.savannah.gnu.org/coreutils.git
cd coreutils
./bootstrap # grabs submodules, sets up configuration
./configure # does actual compiler configuration
make clean # remove old attempts
make -j8 # compile using 8 threads (you might want to alter this)
Isso compilará tudo no diretório src
e deixará os binários lá. Você pode executar o seu recém compilado ls
com ./src/ls
. Você pode fazer alterações e contanto que elas sejam leves, você pode recompilá-las com apenas as make
etapas.