We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Project has two files with the same name "timers.c". One is from LwIP and another from FreeRTOS. Compilier returns warning and errors.
Warning: L6304W: Duplicate input file .\debug\timers.o ignored. Error: L6218E: Undefined symbol sys_timeouts_mbox_fetch (referred from tcpip.o). Error: L6218E: Undefined symbol sys_timeouts_init (referred from init.o). Error: L6218E: Undefined symbol tcp_timer_needed (referred from tcp.o).
My solution is to rename one of files. But it is a bad practice since third-party libs should be unchanged. Is there way to change output name for only file?
Keil really MUST start to produce a full output directory tree to avoid object file name collisions. Projects grow as grass...
Compiling libraries is not the way. I frequently look to their sources to understand how it works, and take ideas for future code. Sometimes it is useful to compile library with DEBUG flags (for example UDP_DEBUG) to debug my higher level modules.
With a couple of exceptions, I too seldom use libraries with Keil, but when I use with other environments, I can have both release and debug builds of the library - and the debug builds contain debug information so the debugger can find the source code.
On a PC, you practically always link library files.
Next thing is that linking a library file doesn't stop you from looking at the library source code.
Thank you. It seems like you have good experience. I'm going to do as you tell.