如何在WSL中运行Makefile并解决mex命令未找到问题
问题分析与解决
错误本质
从报错信息和Makefile内容来看,mex命令未被找到,导致Makefile中执行$(MEX)时为空,最终命令变成:
CFLAGS='-fpic -std=c++17' -R2018a usrp_mex.cpp usrp_gpio.cpp usrp_io.cpp -lboost_filesystem -lboost_thread `pkg-config --libs --cflags uhd`
Shell将CFLAGS=...当作独立命令执行,后续的-R2018a也被识别为不存在的命令,从而抛出错误。
解决步骤:将Matlab路径添加到PATH环境变量
1. 定位Matlab的安装路径
Matlab在WSL中的默认安装路径通常为/usr/local/MATLAB/R2018a(对应Makefile中的-R2018a版本),如果是自定义安装,需找到实际路径。mex命令位于Matlab安装目录的bin子目录下,比如:
/usr/local/MATLAB/R2018a/bin
2. 临时添加到PATH(仅当前终端会话生效)
在终端执行以下命令(替换为你的Matlab实际路径):
export PATH="/usr/local/MATLAB/R2018a/bin:$PATH"
执行后用which mex验证是否能找到命令:
which mex
若输出mex的完整路径,则说明添加成功。
3. 永久添加到PATH(所有终端会话生效)
根据你使用的Shell类型选择对应的配置文件:
- Bash用户:编辑
~/.bashrc文件,添加一行:export PATH="/usr/local/MATLAB/R2018a/bin:$PATH" - Zsh用户:编辑
~/.zshrc文件,添加同样的内容。
保存文件后,执行以下命令使配置生效:
# Bash用户 source ~/.bashrc # Zsh用户 source ~/.zshrc
4. 重新执行Make命令
确认mex命令可被找到后,重新运行:
make -f Makefile
内容的提问来源于stack exchange,提问作者Michelle
相关产品推荐
相关产品推荐

