【发布时间】:2021-04-21 10:26:25
【问题描述】:
我正在尝试在 XV6-riscv 版本上实现信号支持
为了 d 所以我定义了一个sigaction struct 和一些信号宏,比如SIG_IGN。
问题是,当我使用make clean qemu 编译它时,出现以下错误:
In file included from mkfs/mkfs.c:9:
./kernel/types.h:12:8: error: redefinition of 'sigaction'
struct sigaction {
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h:286:9: note: previous definition is here
struct sigaction {
^
In file included from mkfs/mkfs.c:9:
./kernel/types.h:13:12: error: expected ')'
void (*sa_handler) (int);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h:295:38: note: expanded from macro 'sa_handler'
#define sa_handler __sigaction_u.__sa_handler
^
./kernel/types.h:13:10: note: to match this '('
void (*sa_handler) (int);
^
In file included from mkfs/mkfs.c:12:
./kernel/param.h:14:9: error: 'SIG_DFL' macro redefined [-Werror,-Wmacro-redefined]
#define SIG_DFL 0 // default signal handling
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h:131:9: note: previous definition is here
#define SIG_DFL (void (*)(int))0
^
In file included from mkfs/mkfs.c:12:
./kernel/param.h:15:9: error: 'SIG_IGN' macro redefined [-Werror,-Wmacro-redefined]
#define SIG_IGN 1 // ignore signal
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h:132:9: note: previous definition is here
#define SIG_IGN (void (*)(int))1
^
4 errors generated.
make: *** [mkfs/mkfs] Error 1
根据我对 sys 的理解,我所做的新定义已经存在于 macOS signal.h 文件中,我不明白为什么编译器还要检查这个文件?因为它与 XV6 毫无关系,我该如何解决这个问题? 任何帮助将不胜感激!
【问题讨论】:
标签: xcode macos signals macos-big-sur xv6