我试图通过以下命令在Matlab 2012a上构build一个C程序:
mex mat_trans2.c
我得到这个错误:
/usr/bin/ld: cannot find -lstdc++ collect2: ld returned 1 exit status mex: link of ' "mat_trans2.mexa64"' Failed. Error using mex (line 206) Unable to complete successfully.
前一段时间,我能够build立.c文件,我不知道现在发生了什么! 在我的Kubuntu 12.04 64位系统升级之后,可能会发生一些变化。
移植linux的32位应用程序到64位?
在64位windows 7(msys2 / mingw64)上构buildGMP 6.1.0:由于mp_limb_t的configuration失败,不是64位
python pygtk windows 7 64位
在x64系统中SSDT挂钩的替代scheme
我应该提供我的应用程序的x64版本吗?
有人知道如何解决这个问题吗?
谢谢!!!!
编辑:我编辑邮件在Shai回复。 运行:
mex -v mat_trans2.c
我得到:
************************************************************************** Warning: Neither -compatibleArrayDims nor -largeArrayDims is selected. Using -compatibleArrayDims. In the future,MATLAB will require the use of -largeArrayDims and remove the -compatibleArrayDims option. For more information,see: http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.HTML ************************************************************************** /home/mafalda/MATLAB/bin/mex: 1: /home/mafalda/MATLAB/bin/util/oscheck.sh: /lib64/libc.so.6: not found /home/mafalda/MATLAB/bin/mex: 1: /home/mafalda/MATLAB/bin/util/oscheck.sh: /lib64/libc.so.6: not found -> mexopts.sh sourced from directory (DIR = $PREF_DIR) file = /home/mafalda/.matlab/R2012a/mexopts.sh ---------------------------------------------------------------- -> MATLAB = /home/mafalda/MATLAB -> CC = gcc-4.4 -> CC flags: CFLAGS = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread CDEBUGFLAGS = -g copTIMFLAGS = -O -DNDEBUG CliBS = -Wl,-rpath-link,/home/mafalda/MATLAB/bin/glnxa64 -L/home/mafalda/MATLAB/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++ arguments = -DMX_COMPAT_32 -> CXX = g++-4.4 -> CXX flags: CXXFLAGS = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread CXXDEBUGFLAGS = -g CXXOPTIMFLAGS = -O -DNDEBUG CXXliBS = -Wl,/home/mafalda/MATLAB/bin/glnxa64 -L/home/mafalda/MATLAB/bin/glnxa64 -lmx -lmex -lmat -lm arguments = -DMX_COMPAT_32 -> FC = gfortran-4.4 -> FC flags: FFLAGS = -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer FDEBUGFLAGS = -g FOPTIMFLAGS = -O FliBS = -Wl,/home/mafalda/MATLAB/bin/glnxa64 -L/home/mafalda/MATLAB/bin/glnxa64 -lmx -lmex -lmat -lm arguments = -DMX_COMPAT_32 -> LD = gcc-4.4 -> link flags: LDFLAGS = -pthread -shared -Wl,--version-script,/home/mafalda/MATLAB/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined LDDEBUGFLAGS = -g LDOPTIMFLAGS = -O LDEXTENSION = .mexa64 arguments = -> LDCXX = -> link flags: LDCXXFLAGS = LDCXXDEBUGFLAGS = LDCXXOPTIMFLAGS = LDCXXEXTENSION = arguments = ---------------------------------------------------------------- -> gcc-4.4 -c -I/home/mafalda/MATLAB/extern/include -I/home/mafalda/MATLAB/simulink/include -DMATLAB_MEX_file -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O -DNDEBUG "mat_trans2.c" -> gcc-4.4 -O -pthread -shared -Wl,--no-undefined -o "mat_trans2.mexa64" mat_trans2.o -Wl,/home/mafalda/MATLAB/bin/glnxa64 -L/home/mafalda/MATLAB/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++ /usr/bin/ld: cannot find -lstdc++ collect2: ld returned 1 exit status mex: link of ' "mat_trans2.mexa64"' Failed. Error using mex (line 206) Unable to complete successfully.
我会说问题是/lib64/libc.so.6:无法find
加:
locate libstdc++.so.6 /home/mafalda/MATLAB/bin/glnxa64/libstdc++.so.6 /home/mafalda/MATLAB/bin/glnxa64/libstdc++.so.6.0.13 /home/mafalda/MATLAB/sys/os/glnxa64/libstdc++.so.6 /home/mafalda/MATLAB/sys/os/glnxa64/libstdc++.so.6.0.16 /home/mafalda/MATLAB/toolBox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6 /home/mafalda/MATLAB/toolBox/edalink/foundation/hdllink/scripts/linux32/libstdc++.so.6.0.13 /home/mafalda/MATLAB/toolBox/sldv/sldv/polyspace-dvo/lib/x86-linux/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so.6.0.16
如何在32位 *** 作系统上运行64位应用程序
如何在IBM IntelListation Z Pro 9228上启用虚拟化
在64位机器上运行一个32位的二进制文件
C:在处理大数字时避免溢出
windows上的NetCDF for Perl
尝试启动MATLAB:
$ LD_PRELOAD=/usr/lib/libstdc++.so.6 matlab
(或者是你系统上的实际位置)。
你也可以在/lib64/libc.so.6创建一个指向它的符号链接
琐碎的解决方案,我没有检查最明显的事情:
$ sudo apt-get install libstdc ++ 6-4.4-dev
我得到了同样的错误,经过几个小时尝试不同的解决方案,看起来我发现如何解决在我的情况。 解决方法是简单地从libstdc++.so.6创建一个符号链接到libstdc++.so 。 所以:cd到/usr/lib/x86_64-linux-gnu/并运行sudo ln -s libstdc++.so.6 libstdc++.so 。 我希望它也能适用于你的情况。
尝试安装软件包:
sudo yum安装libstdc ++ – static
由于我没有评论的声望,我想说@mafalda的回答为我工作。 我只需要在他的答案中用4.7代替4.4,因为我使用的是gcc-4.7编译器。 即使最新版本的MATLAB(R2016a截至目前)只支持gcc-4.7.x(而不是4.8.x(现在是最新版本)),我想指出如果有人使用这个答案,只需要将4.4替换为4 .x其中x取决于您的gcc编译器版本。
总结以上是内存溢出为你收集整理的在Kubuntu的/ usr / bin / ld上build立MEX文件(MATLAB 2012a)时出错:找不到-lstdc ++'全部内容,希望文章能够帮你解决在Kubuntu的/ usr / bin / ld上build立MEX文件(MATLAB 2012a)时出错:找不到-lstdc ++'所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)