无法使用GNU GCC在matlab(Windows)中编译C文件(MEX)

时间:2014-12-31 06:59:51

标签: c matlab gcc gnu mex

我正在尝试使用GNU GCC编译器在Windows上编译原生linux c文件。出于安装目的,我在以下链接中遵循了Faheem提到的步骤:

Using GCC(minGW) as Matlab's MEX compiler

在那里编译成功的例​​子。但是当我尝试使用线程函数编译文件时,会抛出以下错误:

致命错误:pthread.h:没有这样的文件或目录  #包括                      ^ 编译终止。

我已经安装了与GNU C编译器相关的MinGW安装程序中的所有组件,但错误仍然存​​在。任何人都可以提出解决这个问题的方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据TDM-GCC "Quircks" page,TDM-GCC包括一个用于Microsoft Windows系统的pthreads仿真层,名为" winpthreads",以及最近的工具链,你应该在TDM中拥有x86_64-w64-mingw32\include\pthread.h安装路径。所以,我不知道Faheem的说明有什么问题,但如果MATLAB配置正确,你应该没有麻烦包括pthread.h。

TDM Quircks页面上未说明的是TDM使用MinGW-w64项目中的Winpthreads。从安装了TDM的当前README:

  

" Winpthreads"是由MinGW-W64项目分发的库之一,和   它允许GCC编译时具有完全的pthreads兼容性,即   必须启用std :: thread和其他线程相关的函数   C ++运行时。

正如它所述,Pthreads是MinGW-w64项目的一部分,如果您选择启用了pthreads的工具链,也可以使用MinGW-w64获取它。对于MinGW-w64,我执行以下操作来设置它(see here for more details):

  1. 抓住latest revision for w64 from Sourceforge(或使用the installer选择所需的工具链,选择pthread版本。)
  2. 将其解压缩,以便您拥有编译器的路径,如C:\mingw-w64\x86_64-4.9.2-release-posix-seh-rt_v3-rev1\bin\x86_64-w64-mingw32-g++.exe如果您打算使用mex 在MATLAB中进行编译,则无需MSYS,cygwin或任何其他环境。
  3. 使用自定义mexopts.bat或使用新的xml配置系统进行设置。在我的GitHub存储库中,我在两种文件类型中都有MinGW-w64的C ++配置:mingw_mexopts.batmex_C++_mingw-w64.xml。例如,使用xml文件设置C ++ MEX文件编译:

    mex -setup:C:\Users\Jon\Documents\MATLAB\mex_C++_mingw-w64.xml C++
    

    如果需要,可以通过修改配置文件以类似的方式设置C编译器。

  4. 我在my answerthe canonical question on the MinGW-with-MATLAB topic发布了上述说明的更详细版本。