我正在尝试使用GNU GCC编译器在Windows上编译原生linux c文件。出于安装目的,我在以下链接中遵循了Faheem提到的步骤:
Using GCC(minGW) as Matlab's MEX compiler
在那里编译成功的例子。但是当我尝试使用线程函数编译文件时,会抛出以下错误:
致命错误:pthread.h:没有这样的文件或目录 #包括 ^ 编译终止。
我已经安装了与GNU C编译器相关的MinGW安装程序中的所有组件,但错误仍然存在。任何人都可以提出解决这个问题的方法。提前谢谢。
答案 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):
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或任何其他环境。使用自定义mexopts.bat或使用新的xml配置系统进行设置。在我的GitHub存储库中,我在两种文件类型中都有MinGW-w64的C ++配置:mingw_mexopts.bat和mex_C++_mingw-w64.xml。例如,使用xml文件设置C ++ MEX文件编译:
mex -setup:C:\Users\Jon\Documents\MATLAB\mex_C++_mingw-w64.xml C++
如果需要,可以通过修改配置文件以类似的方式设置C编译器。
我在my answer向the canonical question on the MinGW-with-MATLAB topic发布了上述说明的更详细版本。