墨西哥 - 执行命令'which gcc'挂起



我在编译.c-mex文件时遇到问题。特别是,我无法判断它是否需要很长时间才能编译(这是一个非常大的程序,大约有60MB的代码),或者它是否配置错误或有其他问题。

我在Ubuntu 12.04 64位,MATLAB 2015a上,配置了gcc。我的c文件名为test4.c.

所以,我运行:

mex -v test4.c
Verbose mode is on.
Neither -compatibleArrayDims nor -largeArrayDims is selected.
     Using -compatibleArrayDims. In the future, MATLAB will require the use of
     -largeArrayDims and remove the -compatibleArrayDims option.
     For more information:
     http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
... Looking for compiler 'gcc' ...
... Executing command 'which gcc' ...

这就是我所得到的。如果它在做更多的事情,我本以为详细模式会打印出来

它在编译吗?我怎么知道?为什么它会被困在这里(以及"哪个gcc"在做什么?

命令which gcc通常只会告诉您gcc在系统上的安装位置,这应该很快。你可以自己从一个外壳中尝试确认:

pax> which gcc
/usr/bin/gcc

因此,如果这真的需要很长时间才能做到,我会感到非常惊讶

最好的方法是打开一个终端并输入命令,将您的用户名放在它有<user>:的地方

ps -fu<user> >/tmp/pslist.txt

在我的情况下,这将是ps -fupax

这将为您提供所有进程的列表,然后您可以使用该列表来跟踪树中当前正在运行的进程,例如:

UID        PID  PPID  C STIME TTY          TIME CMD
pax       3103  3099  0 11:42 pts/0    00:00:00 bash
pax       3137  3103  0 11:48 pts/0    00:00:00 ps -f

首先查找mex -v test4.c进程(在CMD下)并获取其进程ID(PID)。从那里,您可以在父进程ID(PPID)字段中查找具有相同编号的所有进程。在我上面的例子中,bash进程是ps进程的父进程。

如果你顺着树往下走足够远,你会发现你的错误过程。假设它的寿命相对较长,则在相隔20秒检查ps输出时,它将仍然存在(例如)——它也更有可能消耗了更多的CPU时间,因此您可以在TIME列中查找非零条目。

最新更新