我正在尝试编译bash src tarball中包含的睡眠负荷。
我尝试运行以下线程的帖子#7中列出的命令,
https://bbs.archlinux.org/viewtopic.php?pid=1366887#p1366887
但是,我在编译睡眠命令时会遇到错误。
这是我运行make sleep
时收到的输出:
System:~/bash-4.0/examples/loadables root# make sleep
gcc -fno-common -DHAVE_CONFIG_H -DSHELL -DMACOSX -g -O2 -I. -I.. -I../.. -I../../lib -I../../builtins -I../../include -I/var/root/bash-4.0 -I/var/root/bash-4.0/lib -I/var/root/bash-4.0/builtins -I../../lib/intl -I/var/root/bash-4.0/lib/intl -c -o sleep.o sleep.c
gcc -dynamic -o sleep sleep.o
Undefined symbols:
"_main", referenced from:
__start in crt1.10.5.o
"_fsleep", referenced from:
_sleep_builtin in sleep.o
"_builtin_usage", referenced from:
_sleep_builtin in sleep.o
"_builtin_error", referenced from:
_sleep_builtin in sleep.o
"_uconvert", referenced from:
_sleep_builtin in sleep.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [sleep] Error 1
有人知道如何使Bash睡眠可加载以编译吗?
预先感谢。
更新:
源代码从http://ftp.gnu.org/gnu/bash/bash-4.0.tar.gz下载。它尚未修改。
我为什么要使用可加载的睡眠?
我有几个程序,可以等待某些事情发生,然后执行一些代码,然后再等待。我使用外部sleep
程序在循环时防止它们的处理器时间。我想使用可加载的sleep
来避免创建外部sleep
进程。我已经尝试使用read
命令,但是当我将bash脚本作为启动Daemons运行时,这将无法使用,因为没有终端。我还尝试使用此read
命令解决方案(https://unix.stackexchange.com/questions/68236/#68269),但是bash在冷冻之前只循环两次。
我的目标是找出能够在不使用外部程序的情况下在狂欢中睡觉的方法。
首先,我们需要知道您从何处获得源代码以及您对此做的一切。iOS基于BSD,而不是Linux,因此编译的Archlinux指令可能与之相关。iPhone上的iOS也存在问题,实际上不是一个完整的操作系统,而是一个视力降低版本。
另外,告诉我们想要睡眠的原因是什么,我们可能会提供另一种选择。例如,如果您已经阅读,则应该有效(睡眠5.5秒):读取-t 5.5 -n 0。
有些人还使用p Ping使用X秒超时的IP。