如果 运行 在具有 tmpfs 的容器中,为什么介子无法确定 time_t 的大小?

Why can't meson determine the size of time_t if running in a container with a tmpfs?

受 systemd 的 meson.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 安装介子,这将按预期工作,返回:

Checking for size of "time_t": 8

但是,在docker run上加上标志--tmpfs /tmp,结果是这样的:

Checking for size of "time_t": -1

为什么会这样? meson 是否可以在 /tmp 中创建临时可执行文件?

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

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