如何在Alpine上编译time.c?
我不喜欢Alpine Linux中内置的如何在Alpine上编译time.c?,c,build,alpine,C,Build,Alpine,我不喜欢Alpine Linux中内置的time实用程序,我想根据自己的需要改进它——我想编辑time.c并将其编译成二进制文件。我已经完成了安装gcc的apk add build base,并从Github复制粘贴了time.c,但是当我执行gcc/tmp/time.c-o/tmp/time时,我得到了: /tmp/time.c:34:10: fatal error: libbb.h: No such file or directory #include "libbb.h"
time
实用程序,我想根据自己的需要改进它——我想编辑time.c
并将其编译成二进制文件。我已经完成了安装gcc的apk add build base
,并从Github复制粘贴了time.c
,但是当我执行gcc/tmp/time.c-o/tmp/time
时,我得到了:
/tmp/time.c:34:10: fatal error: libbb.h: No such file or directory
#include "libbb.h"
^~~~~~~~~
所以我也复制粘贴了它,但它需要更多的头文件。我在某个地方看到,我可能需要apk add alpine sdk
,也许它还可以保证版本兼容性,所以我这样做了,但gcc仍然看不到头文件。我应该提供一些-I
标志吗?要最终编译自定义的
time.c
,我真正需要做什么
注:时间可能有一个SO标签,但我找不到
UPD:我复制了整个include
文件夹,但上面写着:
In file included from /tmp/time.c:34:
include/libbb.h:406:42: error: 'ENABLE_FEATURE_VERBOSE' undeclared here (not in a function)
FILEUTILS_VERBOSE = (1 << 12) * ENABLE_FEATURE_VERBOSE, /* -v */
^~~~~~~~~~~~~~~~~~~~~~
似乎没有时间二进制。假设GNU时间功能是您所追求的,而BusyBox
时间不足以满足您的需要,只需安装最近在Alpine上提供的软件包即可:
apk add time --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing
安装后,它将用GNU time可执行文件替换/usr/bin/time
BusyBox符号链接。编译要比复制一个文件多得多。。。从busybox运行make menuconfig
后,生成系统将定义ENABLE\u功能\u VERBOSE
。您最好克隆整个repo…Busybox将其所有实用程序合并到一个二进制文件中。这意味着它并不意味着任何人都可以编译任何单个文件或实用程序并为它们生成单独的可执行文件,而且作为一种副作用,不同的模块和命令之间存在很多依赖关系。您可能需要一起在系统上构建/替换busybox。(例如,ENABLE_FEATURE_VERBOSE是作为busybox构建过程的一部分创建的)如果你改变了时间的工作方式,你将打破任何依赖于它的外观的东西,就像不幸的是,它与Alpine有相同的问题——它在一个点后打印两位数的时间。Ubuntu和Mac操作系统打印更多数字——3。我想改进的是使用%03
而不是%02
@Nakilon打印。然后您可以尝试最初的修补和构建时间计划,但这次使用GNU时间:git://git.sv.gnu.org/timeOr 尝试获取为您工作的Ubuntu软件包版本的源代码(使用deb src
或从软件包下载页面),并尝试在Alpine上构建它
apk add time --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing