Как скомпилировать 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
шаги.