在vagrant vm中,我执行:
docker exec -it container-id /bin/bash
root@297f6e974824:~$ make
Segmentation fault (core dumped)
什么可能导致此分段错误?
当我使用docker run输入:
docker run --name cc-122711 -P -v /home/vagrant/mm:/home -ti --cap-add NET_ADMIN --cap-add SYS_ADMIN --device /dev/fuse cc /usr/lib/systemd/systemd --system
root@c9f7f3ed6d33:~$ make
make: *** No targets specified and no makefile found. ---it works fine.
作为一种解决方法,我需要docker run每次为编译环境生成新容器。
我重新安装了make 4.1版本(也是4.0版),
sh build.sh,
链接make ... 完成
bash-4.3#pwd /home/tools/make-4.1
bash-4.3#./make
分段错误(核心转储)
bash-4.3#ldd make
linux-vdso.so.1 (0x00007fff0c9fe000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f729f088000)
libc.so.6 => /lib64/libc.so.6 (0x00007f729ecea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f729f28c000)
答案 0 :(得分:0)
如果你有一个足够好的core(5)文件(这意味着通过setrlimit(2)给出的限制足够大),你可以运行
file core
命令(参见file(1) ...),它可能会为您提供崩溃的可执行文件的名称,以便为您提供核心转储。
显然,core
文件来自make
本身。这很不寻常(您可以填写错误报告)。请显示相关的Makefile
。也许您在容器与libc
二进制文件之间存在make
不匹配,或者make
二进制文件可能已损坏。试试ldd make
和make --version
。您也可以尝试下载GNU make的源代码并自行编译(GNU make可以构建不带 make
)