首页 > 解决方案 > 如果在带有 tmpfs 的容器中运行,为什么介子无法确定 time_t 的大小?

问题描述

受 systemdmeson.build文件的启发,我创建了以下文件:

project('test','c')
cc = meson.get_compiler('c')
cc.sizeof('time_t', prefix : '#include <sys/time.h>')

如果我在容器中运行它并通过docker run --rm -it ubuntu:18.04 bash安装介子apt update && apt install -y meson gcc,这将按预期工作,返回:

检查“time_t”的大小:8

但是,将标志添加--tmpfs /tmpdocker run,结果是这样的:

检查“time_t”的大小:-1

为什么会这样?介子可能会在其中创建临时可执行文件/tmp吗?

标签: cdockermeson-build

解决方案


在比较了/tmp两个容器中的挂载选项之后,结果非常简单:docker 似乎noexec默认设置,这就是为什么你必须显式设置exec标志:

--tmpfs /tmp:rw,nosuid,nodev,exec

推荐阅读