Hello all,
After importing multiple legacy 3.3 projects into a CCSv5.1 workspace, I get the following errors:
1. 'rts16etiabi.lib' has incompatible ABI (I'm using COFF ABI with CGT tools 4.1.4 as in CCSv3.3)
2. Symbol defined multiple times in ai.obj and ai.lib
These errors sometimes appeared in CCSv3.3, but a clean build worked for me, it doesn't seem to work in CCSv5.1, what could be wrong? Can you please suggest something?
Jasmeet Kaur97544. 'rts16etiabi.lib' has incompatible ABI (I'm using COFF ABI with CGT tools 4.1.4 as in CCSv3.3)
Jasmeet Kaur97544Symbol defined multiple times in ai.obj and ai.lib
In what order are these files getting linked? If ai.obj appears first on the link command line, I would expect it to resolve symbol references to this file first and not try to resolve it again from ai.lib. Is ai.obj part of ai.lib? If so, you may want to remove it from ai.lib and just leave it as a separate .obj on the command line.
If a post answers your question please mark it with the "Verify Answer" button
Search the wikis for common questions: CGT, BIOS, CCSv3, CCSv4Track a known bug with SDOWP. Enter the bug id in the "Find Record ID" box
Hi Jasmeet,
what steps did you take to do the import? What are your project settings? What do you see set under Project->Properties->General ... Runtime Support library? It seems this setting might not be correct and referencing the eabi library causing issues.
Best REgards,
LIsa
I used the import wizard to import legacy 3.3 multiple projects in the workspace, In the General, I have set little-endian, compiler tool version 4.1.4, output format leagcy COFF, Under the Runtime Model Options, I select tiabi. I hope this is correct, as the same settings have been used in CCSv3.3
Those settings look ok. Can you copy and paste the full output of the CCS build console so I can take a look at the complete set of build options?
Here is the build configuration:
**** Build of configuration Build_45NM for project includegen ****
C:\ti\ccsv5\utils\bin\gmake -k all
'Building file: D:/threadx arm7 gnss/source/includepreproc/includegen/includegen.c'
'Invoking: ARM Compiler'
"C:/CCStudio_v3.3/tms470/cgtools/bin/cl470" --define="RTOS_NUCLEUS" --define="MMGPS_CHIP_VERSION=21" --define="C_OSC_CAL_COMPARISON" --define="ENABLE_TI_ADDONS" --define="GPS5300AI2_BUILD" --define="POD_TESTEN" --include_path="C:/CCStudio_v3.3/tms470/cgtools/include" --include_path="C:/ti/xdais_7_21_01_07/packages/ti/xdais" --include_path=".." --include_path="D:/threadx arm7 gnss ccsv5/source/threadx/include" --include_path="D:/threadx arm7 gnss ccsv5/source" --include_path="D:/threadx arm7 gnss ccsv5/source/me" --include_path="D:/threadx arm7 gnss ccsv5/source/me/me_etc" --include_path="D:/threadx arm7 gnss ccsv5/source/me/cc" --include_path="D:/threadx arm7 gnss ccsv5/source/me/mc" --include_path="D:/threadx arm7 gnss ccsv5/source/pe" --include_path="D:/threadx arm7 gnss ccsv5/source/pe/pe_etc" --include_path="D:/threadx arm7 gnss ccsv5/source/pe/cd" --include_path="D:/threadx arm7 gnss ccsv5/source/libs" --include_path="D:/threadx arm7 gnss ccsv5/source/SampleApps/AI2/ai2" --include_path="D:/threadx arm7 gnss ccsv5/source/SampleApps/AI2/ai" --include_path="D:/threadx arm7 gnss ccsv5/source/SampleApps/AI2/lp" --include_path="D:/threadx arm7 gnss ccsv5/source/libs/bist" --include_path="D:/threadx arm7 gnss ccsv5/source/libs/rtccalib" --include_path="D:/threadx arm7 gnss ccsv5/source/libs/sio" --include_path="D:/threadx arm7 gnss ccsv5/source/libs/i2c" --include_path="D:/threadx arm7 gnss ccsv5/source/libs/newcalib" --include_path="D:/threadx arm7 gnss ccsv5/source/SampleApps/meif" --symdebug:dwarf --diag_warning=225 --display_error_number --abi=tiabi --little_endian --silicon_version=4 --thumb_state --auto_inline=0 --preproc_with_compile --preproc_dependency="includegen.pp" "D:/threadx arm7 gnss/source/includepreproc/includegen/includegen.c"
have you tried setting the runtime support library to automatic?
Best Regards,Lisa
Jasmeet,
Please post the full output of the console (you can save it to a text file and attach it). I'd like to see the full build output as well as the error messages which are thrown by the linker.
Yes Lisa, tried that as well, but in vain.
I'm also getting this type of error for several symbols (mc_pmatch.c is a part of the project mc):
error: symbol $GetBitMask_ind is defined multiple times: mc_pmatch.obj
(C:/GNSS_45nm/Private/source/product/ti/GPS_ROM/projectfiles/mc/Build_45NM/mc.lib) and C:\GNSS_45nm\Private\source\product\ti\GPS_ROM\projectfiles\mc\Build_45NM\mc_pmatch.obj
AartiG,
Sorry, but the number of errors are so large, that the final console only shows the errors, the build console I copied earlier was of another similar project.
Regards,
Jasmeet
These errors are coming from the linker and what you sent earlier was only the compile command, so it doesn't give sufficient detail to be able to really help with this. We really need to be able to look at the link command (everything following "Invoking Linker" in the build console) and also the errors generated in order to provide a more direct/helpful answer.
If the console output is getting too large, you can increase the number of lines it outputs. In CCS 5.1, if you go into Window->Preferences-?C/C++->Build->Console, you can change the number of lines for the console output. You can also right-click in the console view, choose Select All and copy/paste it into a file. Maybe these techniques might help you capture a more complete output. But in order to provide more specific suggestions we really need to be able to see the linker command and errors generated.
0537.console.txt
Please find the attached file, containing the console output.
The attached console shows the build output of the project TILinkAll, which has 4 source files and is an executable that links all the previous .lib files generated by the rest of the projects in the workspace. I have added a particular Link Order and added all the other projects as 'Dependencies' of TILinkAll in the project properties options.
In your build log, there is one thing I seethat could be causing the issue.
You have the option: --obj_directory="c:/GNSS_45nm/Private/source/product/ti/GPS_ROM/projectfiles/TILinkAll/Build_45NM" which puts the obj files in this specific folder. Are there also other .obj files in that folder other than the 4 files you are building? It looks CCS is picking up other .objs from this location and then finding redefined symbols for them in library files as well.
Could you try removing the --obj_directory option? In other words, under Compiler->Directory Specifier, set Mode to "Automatic" which disables the --obj_directory, and then do a clean and rebuild.
One more thing I noticed is that rts16etiabi.lib appears twice on the link command, once with the --library option and once probably from you adding it explicitly to the project. I would suggest removing one of them.
Let us know how this goes.
Thanks AartiG. :)
Setting the mode to automatic helped in the removal of multiply defined symbols, but I had the object directory path set in CCSv3.3, but it didn't cause any error there, Do CCSv3.3 and 5.1 deal differently with this?
Now, the problem is that the linker command file is trying to access the path (as defined earlier) 'C:\GNSS_45nm\Private\source\product\ti\GPS_ROM\projectfiles\mc\Build_45NM\mc_searchengine.obj', but since I have changed the option to automatic, the file 'mc_searchengine.obj' is getting created in the new path 'D:\threadx arm7 gnss ccsv5\New Folder\mc\Build_45NM\mc_searchengine.obj'.
If I try to change the path in the .cmd file, it throws up an error saying 'D:\threadx.obj' not found, probably because of the spaces in the path name, but I cannot rename the whole path now, as it will lead to changing of all the include paths. What should I do now?
<Linking>
>> C:\DOCUME~1\x0176474\LOCALS~1\Temp\TI7363, line 30: error:
can't find input file 'Build_45NM/../fpu.lib'
>> Gnss_45nmLink.cmd: error: system error, can't open file
'C:\GNSS_45nm\Private\source\product\ti\GPS_ROM\projectfiles\mc\Build_45NM\mc_searchengine.obj' for input: No such file or directory
Jasmeet Kaur97544Do CCSv3.3 and 5.1 deal differently with this?
In Eclipse, all files within the project folder are considered part of the project. So if you have other .obj files within your project folder they will be pulled into the link. You need to take a careful look at where your .obj files are located and which ones are required to be linked in, and modify things accordingly. You should still be able to use the --obj_directory option in CCSv5 to specify which directory to place the object files in, and CCS should be able to detect it fine. All I was saying earlier was that the multiply defined symbols were coming because they were found in both the .lib and .obj.
Jasmeet Kaur97544 >> Gnss_45nmLink.cmd: error: system error, can't open file 'C:\GNSS_45nm\Private\source\product\ti\GPS_ROM\projectfiles\mc\Build_45NM\mc_searchengine.obj' for input: No such file or directory
Does it not work if you enclose the path in quotes?