ld错误消息的含义"重复的版本标记"

时间:2016-07-11 14:48:05

标签: matlab ld mex

我通过使用Mex编译生成.mexa64二进制文件,将一些C ++功能编译到Matlab中。

老实说,我不太了解.mexa64二进制文件中创建的符号的内容以及它如何让Matlab调用C ++,但我从一个与错误相关的简单问题开始我最终当命令mex调用ld时获取。

ld错误是:

/usr/bin/ld.real:重复的版本标签`MEX'

问题是,这个ld错误是什么"重复的版本标记"意思?其他值得赞赏的观点是:与我试图专门做的Matlab编译有什么关系;我在哪里可以找到全面的ld错误消息文档?

后一点,全面的ld文档,我发现特别难找。 ld的手册页似乎对此没有帮助。

要求发布mex配置文件:

<config Name="g++" ShortName="g++" Manufacturer="GNU" Version="" Language="C++" Priority="A" Location="$GCC_DIR"> <Details CompilerExecutable="$CXX" CompilerDefines="$DEFINES" CompilerFlags="$CXXFLAGS" OptimizationFlags="$CXXOPTIMFLAGS" DebugFlags="$CXXDEBUGFLAGS" IncludeFlags="$INCLUDE" LinkerLibraries="$LINKLIBS" LinkerOptimizationFlags="$LDOPTIMFLAGS" LinkerDebugFlags="$LDDEBUGFLAGS" CompilerDefineFormatter="-D%s" LinkerLibrarySwitchFormatter="-l%s" LinkerPathFormatter="-L%s"/> <vars CMDLINE1="$CXX -c $DEFINES $INCLUDE $CXXFLAGS $OPTIM $SRC -o $OBJ" CMDLINE2="$LDXX $LDFLAGS $LDTYPE $LINKOPTIM $LINKEXPORT $OBJS $CXXLIBS $LINKLIBS -o $EXE" CMDLINE3="rm -f $OBJ" CXX="$GCC" DEFINES="-D_GNU_SOURCE $MATLABMEX" MATLABMEX="-DMATLAB_MEX_FILE " CXXFLAGS="-ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11" INCLUDE="-I"$MATLABROOT/extern/include" -I"$MATLABROOT/simulink/include"" CXXOPTIMFLAGS="-O -DNDEBUG" CXXDEBUGFLAGS="-g" LDXX="$CXX" LDFLAGS="-pthread -Wl,--no-undefined " LDTYPE="-shared" LINKEXPORT="-Wl,--version-script,"$MATLABROOT/extern/lib/$ARCH/mexFunction.map"" LINKLIBS="-Wl,-rpath-link,$MATLABROOT/bin/$ARCH -L"$MATLABROOT/bin/$ARCH" -lmx -lmex -lmat -lm -lstdc++" LDOPTIMFLAGS="-O" LDDEBUGFLAGS="-g" OBJEXT=".o" LDEXT=".mexa64"> </vars> <client> <engine LINKLIBS="$LINKLIBS -leng" LINKEXPORT="" LDEXT="" LDTYPE=""/> <mbuild DEFINES="-D_GNU_SOURCE $MATLABMEX -DUNIX -DX11 -DGLNXA64 -DGCC" CXXFLAGS="-ansi -pthread -std=c++11" INCLUDE="$INCLUDE -I"$MATLABROOT/extern/include/cpp"" LDFLAGS="-pthread -Wl,-rpath-link,$MATLABROOT/bin/$ARCH" LINKEXPORT="" LINKLIBS="-L"$MATLABROOT/runtime/$ARCH" -lm -lmwmclmcrrt" LDEXT="" MATLABMEX="" LDTYPE=""/> </client> <locationFinder> <GCC> <cmdReturns name="which g++"/> </GCC> <CPPLIB_DIR> <cmdReturns name="g++ -print-file-name=libstdc++.so" diagnostic="GCC appears to be installed, but supporting C++ libraries were not found. You must first install the gcc-c++ packge, or similiar, to complete this action."/> </CPPLIB_DIR> </locationFinder> </config>

0 个答案:

没有答案