编译一个c++;使用ubuntu中的mex在matlab中创建文件 我试图在Gu++版本8上运行一个包含C++代码和FFWT3库的Matlab(2020A)代码,在Ubuntu OS(虚拟机)上。 我使用的mex命令: eval(strcat("mex ./file_mex.cpp ", filelist, " -DNO_SDL -DNO_OPENEXR -DNO_TIFF -DNO_JPEG -DNO_PNG -L/usr/lib/x86_64-linux-gnu -I/home/mh/fftw-3.3.9/api/ -lfftw3f -lfftw3f -ldl -R2018a"))

编译一个c++;使用ubuntu中的mex在matlab中创建文件 我试图在Gu++版本8上运行一个包含C++代码和FFWT3库的Matlab(2020A)代码,在Ubuntu OS(虚拟机)上。 我使用的mex命令: eval(strcat("mex ./file_mex.cpp ", filelist, " -DNO_SDL -DNO_OPENEXR -DNO_TIFF -DNO_JPEG -DNO_PNG -L/usr/lib/x86_64-linux-gnu -I/home/mh/fftw-3.3.9/api/ -lfftw3f -lfftw3f -ldl -R2018a")),c++,matlab,ubuntu,mex,C++,Matlab,Ubuntu,Mex,插入时:$locate fftw3.h 我得到: /home/mh/fftw-3.3.9/api/fftw3.h /usr/local/include/fftw3.h 我在这里遗漏了导致此错误并无法编译的内容: 使用mex/usr/bin/ld://usr/local/lib/libfftw3f.a(assert.o)时出错: 无法针对符号'stdout@@GLIBC_2.2.5'重新定位R_X86_64_PC32 在制作共享对象时使用;使用-fPIC/usr/bin/ld重新编译: 最终链接失

插入时:
$locate fftw3.h
我得到:

/home/mh/fftw-3.3.9/api/fftw3.h

/usr/local/include/fftw3.h

我在这里遗漏了导致此错误并无法编译的内容:

使用mex/usr/bin/ld://usr/local/lib/libfftw3f.a(assert.o)时出错: 无法针对符号'stdout@@GLIBC_2.2.5'重新定位R_X86_64_PC32 在制作共享对象时使用;使用-fPIC/usr/bin/ld重新编译: 最终链接失败:错误值收集2:错误:ld返回1退出

警告:您正在使用gcc版本“8.4.0”。gcc的版本不是 支持。MEX当前支持的版本为“6.3.x”

任何帮助都将不胜感激,
提前感谢

消息解释了这一点:如果要将libfftw3f.a库链接到MEX文件(共享对象),则需要使用
-fPIC
编译该库。如果您不是自己编译库,您可以改为链接FFTW共享对象(libfftw3f.so)。感谢您回复@CrisLuengo,当我试图在mex命令中添加-fPIC时,我遇到了这个错误(未知mex参数'-fPIC',因此我在ubuntu终端中使用:
$make-fPIC
重新运行库的配置,但我仍然收到此错误,您能告诉我如何在mex命令中使用-fPIC吗?此选项用于编译FFTW库,而不是mex文件。它是一个编译器选项,需要添加到
CFLAGS
构建FFTW时的环境变量(我认为)。该消息解释了这一点:如果要将库libfftw3f.a链接到MEX文件(共享对象),则需要使用
-fPIC
编译该库。如果不是自己编译库,则可以改为链接FFTW共享对象(libfftw3f.so)。感谢您回复@CrisLuengo,当我试图在mex命令中添加-fPIC时,我遇到了这个错误(未知mex参数'-fPIC',因此我在ubuntu终端中使用:
$make-fPIC
重新运行库的配置,但我仍然收到此错误,您能告诉我如何在mex命令中使用-fPIC吗?此选项用于编译FFTW库,而不是mex文件。它是一个编译器选项,需要添加到
CFLAGS
构建FFTW时的环境变量(我认为)。