QNX 7.1 交叉编译 cron
概述
cron 是 Linux 系统上一个非常有用的工具,它可以让你在特定的时间或间隔自动运行指定的任务,你可以使用它来自动执行日志转储、备份、发送邮件通知等。
cron 最初是运行在 BSD 4.23 SysV 系统上,目前在 Linux 系统运行的是开源的 cron 实现,其作者为 Pau Vixie,最后的版本是 1993 年发布的 Vixie Cron V3.0,所以 cron 源码已经有非常长的时间未作任何变动了。
不过每个发行版本(比如说 Debian 或者 Redhat)会继续维护 cron 的源码,可以通过下文所介绍的方法获取 cron 源码。
获取源码
使用 apt-get 获取(推荐)
使用 apt-get source
命令下载 cron 源码:
mkdir cron
cd cron
apt-get source cron
技巧:
将 Ubuntu 的软件源配置成阿里云可大大节省软件包下载时间
参考:Ubuntu 修改 apt 源为阿里云源
上述命令执行后会将 cron 的原始代码包及 debian 的补丁包一起下载下来,合并到 cron-3.0pl1
文件夹,最终可以在合并后的文件夹中进行编译:
uidq2691@hzhebserver01:~/projects/linux/cron$ ls
cron-3.0pl1 cron_3.0pl1-136ubuntu1.dsc
cron_3.0pl1-136ubuntu1.debian.tar.xz cron_3.0pl1.orig.tar.gz
使用 git 获取
上文提到,每个发行版本会继续维护 cron 的源码,在 Debin 系统中使用的是 Git 版本控制系统来进行维护。可以使用下面命令拉取最新源码:
git clone https://salsa.debian.org/debian/cron.git
修改 Makefile 文件
-
修改 58 行,添加
-lregex
链接正则表达式 libregex.so 库LIBS = $(PAM_LIBS) $(SELINUX_LIBS) $(AUDIT_LIBS) -lregex
-
修改 68 行,添加编译所需的宏定义。
COMPAT = -DPOSIX -D_QNX_SOURCE -D_QNX_ -D__GLIBC__ -DMAXNAMLEN=255
-
修改 83 行,添加
LDFLAGS
配置:LDFLAGS = -Vgcc/8.3.0,gcc_ntoaarch64le
-
修改 87 行,添加
CFLAGS
配置:CFLAGS += $(INCLUDE) $(COMPAT) $(DEFS) -Vgcc/8.3.0,gcc_ntoaarch64le
配置 QNX 编译环境
-
假如 QNX 7.1 SDP 的路径为
/work/sdk/qnx710
,使用source
命令让 qnx 环境变量生效:source /work/sdk/qnx710/qnxsdp-env.sh
-
将
qcc
添加到$PATH
环境变量:export PATH=$PATH:$QNX_HOST/usr/bin
-
配置
CC
环境变量的值,默认为gcc
,需要修改成qcc
:export CC=qcc
-
执行
make
命令进行编译:make
-
最后会在当前目录中生成
cron
和crontab
两个进程。
欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景