Compilation make在进入现有容器时导致堆芯转储
在vagrant vm中,我执行:Compilation make在进入现有容器时导致堆芯转储,compilation,docker,Compilation,Docker,在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
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为编译环境生成新容器
我重新安装了make 4.1版(也是4.0版)
sh build.sh
链接制作。。。
完成
bash-4.3#pwd
/主页/工具/制作-4.1
bash-4.3#/制作
分段故障(堆芯转储)
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)
如果您有一个足够好的文件(这意味着通过给定的限制足够大),您可以运行
file core
命令(请参阅…),它可能会为您提供已崩溃的可执行文件的名称,以便为您提供核心转储
显然,
core
文件来自make
本身。这是不寻常的(您可以填写错误报告)。请显示相关的Makefile
。可能容器和make
二进制文件之间存在libc
不匹配,或者make
二进制文件已损坏。尝试ldd make
和make--version
。您也可以尝试下载的源代码并自己编译(GNU make可以在不使用make
的情况下构建)嗨,谢谢您的快速回答,~$file core.43 core.43:ELF 64位LSB core file x86-64,版本1(SYSV),SVR4风格,来自“make”@feicheng:这应该进入您的问题,而不是作为对某些答案的评论