【问题标题】:unable to compile C files (MEX) in matlab (Windows) using GNU GCC无法使用 GNU GCC 在 matlab (Windows) 中编译 C 文件 (MEX)
【发布时间】:2015-02-27 07:49:42
【问题描述】:

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

Using GCC(minGW) as Matlab's MEX compiler

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

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

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

【问题讨论】:

  • pthread.h 是一个用于线程的 POSIX 库,在您使用 Windows 时无法在您的系统上找到它。您需要在此处获取它们:sourceware.org/pthreads-win32。另请查看:stackoverflow.com/questions/2150938/…
  • 您是否检查了存在 [如果不存在,复制] pthread.hMinGW/include 或类似路径?
  • 感谢您的快速回复。是的,Sourav 先生,我试过这样做。但后来它要求更多的头文件和更多的缺失功能。没有尽头。
  • 谢谢Rayryeng先生,我试试看。

标签: c matlab gcc gnu mex


【解决方案1】:

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

TDM Quirks 页面上没有说明的是 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 编译器。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2011-07-24
    相关资源
    最近更新 更多