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++ template link error

Other Parts Discussed in Thread: DM3730

I use the CCS5.2 IDE build the project with C++ template successful.But when I use the complier(ti_cgt_c6000_7.3.4_setup_linux_x86.bin) under the linux os,building the same project,there are link errors:

 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 
When I comment the template above,there are more template errors.Should I change the compiler version or can do anything else?
  • I presume you build with the older COFF ABI, and not the newer EABI (with the build option --abi=eabi).  Normally, I would suspect one of the problems discussed in this wiki article.  But that doesn't explain this ...

    Yuxin Li said:
    I use the CCS5.2 IDE build the project with C++ template successful

    While I'm not sure it will work, please delete all the object files and build again.

    Thanks and regards,

    -George

  • It's pretty likely that your Linux build does not include all of the same object files as are included when you build under CCS. An easy way to check this would be to generate the linker map file for both the Linux build and the CCS build and compare them. You may see that there are some object files in the CCS map that are not present in the Linux map.
  • Under CCS5.2, I can find the build option eabi(ELF), but under Linux ,how to set the build option --abi=eabi?
  • Please describe your build environment when you are on Linux.  I presume you do not use CCS, and you build on the command line.  Do you use make or something similar?

    Thanks and regards,

    -George

  • We use the Davinci DM3730,the software package is DVSDK4_03.

    We use the C6000 compiler v 6.1.14(in the path:/home/davinci/dm3730/dvsdk4_03/cgt6x_6_1_14).

    Then we install the compiler v7.3.4(ti_cgt_c6000_7.3.4_setup_linux_x86.bin)  in the same path(/home/davinci/dm3730/dvsdk4_03/cgt6x_6_1_14).

    Our code is in the path:

    /home/davinci/dm3730/dvsdk4_03/codecs-omap3530_4_02_00_00/packages/ti/sdo/codecs.

    In the path:/home/davinci/dm3730/dvsdk4_03, there is a xdctools_3_16_03_36. I know it's a compile tools,it generates the file:/home/davinci/dm3730/dvsdk4_03/codecs-omap3530_4_02_00_00/packages/ti/sdo/server/cs/pacakge.mak.We should add the build option --abi=eabi in the file  package.mak. But int the file package.mak I saw that:

    #
    # Do not edit this file. This file is generated from
    # package.bld. Any modifications to this file will be
    # overwritten whenever makefiles are re-generated.
    #

    In the file package.bld :

    /*
    * ======== package.bld ========
    */

    Pkg.attrs.exportAll = true;
    Pkg.attrs.exportExe = true;

    /* Uncomment this to build the server with debug support */
    //Pkg.attrs.profile = "debug";

    /* bin/ is a generated directory that 'xdc clean' should remove */
    Pkg.generatedFiles.$add("bin/");

    var fullName = Pkg.name;
    var serverName = fullName.substring(fullName.lastIndexOf('.')+ 1);

    Pkg.uses = ["ti/bios/include"];

    for (var i = 0; i < Build.targets.length; i++) {
    var targ = Build.targets[i];

    print("building for target " + targ.name + " ...");

    Pkg.addExecutable("bin/" + serverName, targ, "ti.platforms.evm3530",
    {
    // tcopts: "-Dxdc.cfg.check.fatal=false",
    cfgScript: "server.tcf",
    lopts: "-l link.cmd",
    }).
    addObjects( [
    "main.c",
    ] );
    }

    I can't get useful information to add the build option.

    All above is the detail,please help me to add the build option.Tks.