Mex - 执行命令'哪个gcc'挂起

时间:2015-10-30 03:40:59

标签: matlab gcc compilation mex

我无法编译我的.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' ...

而这就是我得到的。如果它做了更多的东西,我会期望详细模式会打印它。

正在编译吗?我怎么知道?为什么它会卡在这里(什么是#34; gcc"做什么?

1 个答案:

答案 0 :(得分:1)

命令which gcc通常只会告诉您系统上安装gcc的位置,这应该是相当快的。您可以自己尝试shell来确认:

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进程的父进程。

如果你对树的追踪程度足够远,你就会发现错误的过程。假设它相对长寿,那么在检查ps输出相隔20秒(例如)时它仍然存在 - 它也更有可能消耗更多的CPU时间,因此你可以查看{{ 1}}列用于非零条目。