gpt4 book ai didi

编译 vsftpd 3.0.0 失败

转载 作者:太空狗 更新时间:2023-10-29 11:46:27 25 4
gpt4 key购买 nike

我最近尝试编译 vsftpd 3.0.0 但由于以下编译错误而失败:

gcc -c seccompsandbox.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -               Wshadow -Werror -Wformat-security -D_FORTIFY_SOURCE=2  -idirafter dummyinc
seccompsandbox.c:63: error: ‘O_DIRECTORY’ undeclared here (not in a function)
seccompsandbox.c:63: error: ‘O_CLOEXEC’ undeclared here (not in a function)
make: *** [seccompsandbox.o] Error 1

由于我对源代码和环境不是很熟悉,所以我不知道如何解决这个问题。我想这与新的 seccomp 过滤器沙箱有关。谷歌上的搜索显示错误是可重现的,但没有提交解决方案。

我的 linux 内核版本是 2.6.32-5-amd64 我使用的是 gcc 版本 4.4.5 (Debian 4.4.5-8)

欢迎任何想法。(如果您需要更多信息,请随时询问)

最佳答案

至少在 Debian 上,O_DIRECTORYO_CLOEXEC 仅在定义了 _GNU_SOURCE 时才定义。

虽然 _GNU_SOURCE 在当前的 vsftp 版本中为某些模块设置了,但通常没有设置。

作为解决方法,您可以使用以下补丁:

diff -Naur vsftpd-3.0.0.orig/seccompsandbox.c vsftpd-3.0.0/seccompsandbox.c
--- vsftpd-3.0.0.orig/seccompsandbox.c 2012-04-05 00:41:51.000000000 +0200
+++ vsftpd-3.0.0/seccompsandbox.c 2012-06-30 15:25:52.000000000 +0200
@@ -11,7 +11,7 @@
#include "seccompsandbox.h"

#if defined(__linux__) && defined(__x86_64__)
-
+#define _GNU_SOURCE
#include "session.h"
#include "sysutil.h"
#include "tunables.h

免责声明:应用此补丁可以编译当前的 vsftp 版本,我现在知道创建的二进制文件是否正常工作。

关于编译 vsftpd 3.0.0 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com