Как скомпилировать sorcecode из исходного исходного кода ls.c?

Я скачал официальный ls.c исходный код и попытался скомпилировать его с помощью gcc. Проблема была в том, что gcc показал мне много ошибок.

$ gcc ls.c -o ls

ls.c:38:20: fatal error: config.h:

Я исправил многие из этих ошибок, выполнив поиск с помощью команды find в моем dictonarys.

$ find /usr/src/ -name "nameofthelibary" 2> /dev/null

для некоторых библиотек я нашел правильный путь, поэтому, например, я мог бы поместить их в #include <config.h> => #include </usr/src/linuxheader.../config.h> как я уже говорил, этот метод работал для некоторых библиотек, но не для заголовка, например #include "die.h"

поэтому мой вопрос сейчас: есть ли способ скомпилировать этот ls.c? я хочу узнать, как это работает, изменив его

1 ответ

ls является частью пакета coreutils и поэтому зависит как от других файлов в coreutils, так и от шагов настройки. Вы, вероятно, могли бы потратить много времени на то, чтобы распутать его из библиотеки, но если вы не планируете компилировать это несколько сотен раз в день, я не думаю, что оно того стоит.

Как сказал pim в комментариях, вы можете узнать о полном процессе сборки из README.hacking файл в корне дерева мерзавца. Я запустил следующее, не обращая особого внимания, но это то, что сработало для меня.

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)

Это скомпилирует все в src каталог и оставить там двоичные файлы. Вы можете запустить свой недавно скомпилированный ls с ./src/ls, Вы можете вносить изменения и, пока они легкие, вы можете перекомпилировать их, используя только make шаги.

Другие вопросы по тегам