标签: source

如何找到 Linux 内核系统调用的实现?

我试图mkdir通过查看内核源代码来了解一个函数是如何工作的。这是尝试了解内核内部结构并在各种功能之间导航。我知道mkdirsys/stat.h. 我找到了原型:

/* Create a new directory named PATH, with permission bits MODE.  */
extern int mkdir (__const char *__path, __mode_t __mode)
     __THROW __nonnull ((1));
Run Code Online (Sandbox Code Playgroud)

现在我需要看看这个函数是在哪个 C 文件中实现的。从源目录,我试过

ack "int mkdir"
Run Code Online (Sandbox Code Playgroud)

其中显示

security/inode.c
103:static int mkdir(struct inode *dir, struct dentry *dentry, int mode)

tools/perf/util/util.c
4:int mkdir_p(char *path, mode_t mode)

tools/perf/util/util.h
259:int mkdir_p(char *path, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

但它们中没有一个与 中的定义匹配sys/stat.h

问题

  1. 哪个文件有mkdir实现?
  2. 有了上面这样的函数定义,我怎么能找出哪个文件有实现呢?内核在定义和实现方法时是否遵循任何模式?

注意:我正在使用内核2.6.36-rc1

source system-calls linux-kernel

376
推荐指数
7
解决办法
5万
查看次数

确定源 shell 脚本的路径

有没有办法让一个来源的shell 脚本找出自己的路径?我主要关注 bash,尽管我有一些使用 tcsh 的同事。

我猜我在这里可能没有很多运气,因为采购导致命令在当前 shell 中执行,所以$0仍然是当前 shell 的调用,而不是源脚本。我目前最好的想法是这样做source $script $script,以便第一个位置参数包含必要的信息。有人有更好的方法吗?

需要明确的是,我正在采购脚本,而不是运行它:

source foo.bash
Run Code Online (Sandbox Code Playgroud)

shell source

103
推荐指数
5
解决办法
7万
查看次数

为什么 Bash 的源代码不需要执行位?

与 Bash 的 source可以在不设置执行位的情况下执行脚本。这是记录在案的预期行为,但这不是反对使用执行位吗?

我知道,这source不会创建子shell。

bash source permissions conventions executable

63
推荐指数
4
解决办法
1万
查看次数

从源代码构建和使用安装包有什么区别?

我想知道:在安装某些东西时,有一种双击安装可执行文件的简单方法,另一方面,有一种从源代码构建它的方法。

后一个,下载一个源包,真的很麻烦。

但是这两种方法之间的根本区别是什么?

compiling source software-installation

59
推荐指数
4
解决办法
5万
查看次数

uname 从哪里获得它的信息?

uname 真正从哪里获取信息?

我认为这应该是直截了当的。不幸的是,我找不到任何仅包含该信息的标题。

假设有人想将uname/ uname -s from的基本输出更改Linux为其他内容(本质上是重命名内核)。

他/她将如何以正确的方式(即更改源)进行操作?

linux source kernel

48
推荐指数
5
解决办法
4万
查看次数

如何从源代码编译和安装程序

这个问题确实限制了我对 Linux 的享受。如果应用程序不在存储库中,或者它没有安装程序脚本,那么我真的很纠结在哪里以及如何从源代码安装应用程序。

与Windows相比,这很容易。您(几乎)需要使用在向导中完成所有工作的安装程序应用程序。使用 Linux... 没那么多。

那么,您是否对此有任何提示或说明,或者是否有任何网站明确解释了从源代码安装 Linux 程序的方式、原因和位置?

compiling source software-installation

47
推荐指数
2
解决办法
8万
查看次数

为什么程序不以编译格式分发?

但他们给出的指令是

cd downloaded_program
./configure
make install
Run Code Online (Sandbox Code Playgroud)

这将创建所需的 ELF,可能还有一些 .so 文件。

为什么不把它们放在一个 zip 文件中进行下载,就像 Windows 应用程序一样?有什么理由需要用户编译它们吗?

source make software-installation elf package-management

35
推荐指数
6
解决办法
6449
查看次数

为什么 Arch Linux 中没有 -dev 包?

我知道像GentooSlackware这样的基于源代码的发行不需要*-dev程序版本。它们包括源代码以及用于在本地编译所有内容的头文件。

但是我从未*-devArch Linux 中看到过包,尽管它是基于包的。我*-dev在其他发行版中遇到了很多包。

compiling source arch-linux package-management

34
推荐指数
2
解决办法
2万
查看次数

哪里可以下载特定版本的Linux Kernel源代码?

是否有下载特定内核版本源的资源?比如我想拿到2.6.36.2的源码来和这个包对比,看看有什么变化?

source version linux-kernel

27
推荐指数
4
解决办法
8万
查看次数

Linux 和 BSD 中的常见程序(例如:“ls”、“cat”)是否来自相同的源代码?

Linux 和 BSD 都有像lsandcatechoand 之类的通用程序kill

它们来自相同的源代码,还是 Linux 和 BSD 都拥有这些程序的独特源代码?

linux source bsd

25
推荐指数
3
解决办法
4260
查看次数