如何编译官方ls.c源代码的sorcecode?

如何编译官方ls.c源代码的sorcecode?

我下载了官方ls.c源代码并尝试使用 gcc 进行编译。问题是 gcc 显示了很多错误。

$ gcc ls.c -o ls

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

我确实通过用 find 命令搜索我的词典修复了很多错误

$ 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在 git 树的根目录中。我运行了下面的命令,但并没有真正注意到,但这对我来说是有效的。

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

相关内容