This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6000 编译器 v7.3.4 编译C++模板时 linking errors

Other Parts Discussed in Thread: DM3730

使用CCS 5.2 IDE编译含有C++模板代码,能够编译通过,并生成了.out文件。但是使用linux下的编译器(ti_cgt_c6000_7.3.4_setup_linux_x86.bin)编译时,出现了以下错误:

 undefined                                                                                                                                                                                                                                                                                 first referenced                                                                                                                      
  symbol                                                                                                                                                                                                                                                                                       in file                                                                                                                           
 ---------                                                                                                                                                                                                                                                                                 ----------------                                                                                                                      
 void Eigen::DenseBase<T1>::checkTransposeAliasing<U1>(const U1 &) const [with T1=Eigen::Matrix<double, (int)-1, (int)1, (int)0, (int)-1, (int)1>, U1=Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, (int)-1, (int)1, (int)0, (int)-1, (int)1>>] /home/davinci/dm3730/dvsdk4_03/codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/face_recog/lib/face_recog.a64P<estimate_3D_pose.o64P>
 Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<T1, T2>::minimize(Eigen::Matrix<T2, (int)-1, (int)1, (int)0, (int)-1, (int)1> &) [with T1=Eigen::NumericalDiff<eos::fitting::detail::OrthographicParameterProjection, (Eigen::NumericalDiffMode)0>, T2=double]           /home/davinci/dm3730/dvsdk4_03/codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs/face_recog/lib/face_recog.a64P<estimate_3D_pose.o64P>

error: unresolved symbols remain 

CCS5.2的编译器版本是C6000 v7.3.4,与linux下的编译器版本一样,为什么编译器版本一样,一个有错,一个却没有报错呢?

  • undefined symbol -------------,这个省略号是你加的,还是本身输出的就是这个?直观看是调用的某个函数没有定义,也就是它所在的库没有加到工程里来。

  •  这个是截图,不知道你能否看清楚?

  • 你是哪的工程?

    我看里面有DM3730的信息,而你的标签写着C6000 starterware,据我所知,DM3730没有starterware包。

  • 在Linux下,使用的是DM3730的dvsdk4_03软件包,代码在/home/davinci/dm3730/dvsdk4_03/codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs目录下,有人建议我使用ELF方式来编译,就是加--abi=eabi选项但是找不到在哪里配置的,我知道是/home/davinci/dm3730/dvsdk4_03, there is a xdctools_3_16_03_36 这个工具包生成的makefile来编译的:

    因为/home/davinci/dm3730/dvsdk4_03/xdctools_3_16_03_36/packages/ti/targets/elf/C64P.xdc 这个文件下有下面的信息

    override readonly config ti.targets.ITarget.Command asm = {

    cmd: "cl6x -c",

    opts: "-mv64P --abi=elfabi"

    };

    override readonly config ti.targets.ITarget.Command lnk = {

    cmd: "lnk6x",

    opts: "--abi=elfabi"

    };

    你知道怎么配置这个ELF的编译选项吗?