如何在 WSL 中运行 Makefile?
我在 WSL 中运行
make -f Makefile
并收到以下错误:
CFLAGS='-fpic -std=c++17' -R2018a usrp_mex.cpp usrp_gpio.cpp usrp_io.cpp -lboost_filesystem -lboost_thread `pkg-config --libs --cflags uhd`
/bin/sh: 1: -R2018a: not found
Makefile:11: recipe for target 'usrp_mex.mex' failed
make: *** [usrp_mex.mex] Error 127
好像找不到mex命令。如何将 Matlab 安装添加到 PATH?
来自 Makefile:
BUILDDIR:=build
MEX=${shell which mex}
ifeq ("$(MEX)", "")
MEX:=${shell which matlab-mex}
endif
all: usrp_mex.mex
usrp_mex.mex: usrp_mex.cpp usrp_gpio.cpp usrp_io.cpp
$(MEX) CFLAGS='-fpic -std=c++17' -R2018a $^ -lboost_filesystem -lboost_thread `pkg-config --libs --cflags uhd`
问题是你实际上是在尝试运行:
CFLAGS='-fpic -std=c++17' -R2018a usrp_mex.cpp...
来自外壳。这一行将运行变量赋值,
CFLAGS='-fpic -std=c++17'
,它将 CFLAGS
设置为 '-fpic -std=c++17'
(注意引号)。此变量只会在该配方行的持续时间内设置。然后 shell 将尝试处理下一个标记 -R2018a
,它将被视为可执行文件。
我的猜测是这个食谱行中的结束语放错了地方,但你必须发布规则来确认。