/bin/sh 未找到由 gcc 在 musl 工具链上编译的文件

File compiled by gcc on a musl toolchain not found by /bin/sh

我在 dockerhub 上试用了 muslcc 镜像,但无法运行 编译的 Hello World 程序。

我使用的图像是:muslcc/i686:x86_64-linux-musl(找到here)。我加载图像:

docker run -it --rm -v /path/to/local:/var muslcc/i686:x86_64-linux-musl

这样我就可以在我的本地机器上编码,并在 musl 图像上编译和测试。


我正在编译的程序是一个基本的 hello world:

#include<stdio.h>

int main(void){
    puts("Hello world.");
    return 0;
}

此文件另存为helloworld.c

I 运行 gcc -Wall helloworld.c 和获取 a.out 在同一目录中。做 ls -l 给我:

total 1068
-rwxr-xr-x    1 root     root          7584 Jul 25 05:41 a.out
-rw-r--r--    1 root     root            76 Jul 25 05:27 helloworld.c

当我尝试 运行 a.out 时:./a.out,我得到:

/bin/sh: ./a.out: not found

我也尝试指定一个输出文件,以防这是默认输出的一些问题,但没有成功。我也尝试过使用绝对路径,la /var/a.out 但也没有运气。

-- 编辑:

  1. 我检查过 ./ 符号在 $PATH

好的,我通过向 gcc 添加 -static 标志修复了它:

gcc -static input.c -o output.out