This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Error: L6200E: Symbol multiply defined compiling Adam Dunkels uIP

Hello,

I get this error when compiling Adam Dunkels uIP adapted to LPC-2124 board. fs.c contains the functions to open files (fs_open) and fsdata.c contains the html code of these files. I'm completely stuck with this, I would apreciate any help.

Thanks.

error log:
uIP-2124.axf: Error: L6200E: Symbol file_cgi_files multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_cgi_stats multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_cgi_tcp multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_img_bg_png multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_about_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_control_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_404_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_files_footer_plain multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_files_header_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_index_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_stats_footer_plain multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_stats_header_html multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_tcp_footer_plain multiply defined (by fsdata.o and fs.o).
uIP-2124.axf: Error: L6200E: Symbol file_tcp_header_html multiply defined (by fsdata.o and fs.o).

Parents
  • Please read & follow the instructions for posting source code - and pay attention to the 'Preview'

    Attention to detail is key in this game!

    "I know that I only have to declare (sic) it in one of them and make a reference as extern-declare in the other."

    To be precise, you need to define it exactly once - and then use extern declarations as often as you like elsewhere.

    You haven't shown your header's contents - are you sure it doesn't contain a definition...?

Reply
  • Please read & follow the instructions for posting source code - and pay attention to the 'Preview'

    Attention to detail is key in this game!

    "I know that I only have to declare (sic) it in one of them and make a reference as extern-declare in the other."

    To be precise, you need to define it exactly once - and then use extern declarations as often as you like elsewhere.

    You haven't shown your header's contents - are you sure it doesn't contain a definition...?

Children
  • Sorry for mistakes,

    I am going to check header files carefulle and try to resolve these problems, anyway I post them (headers files) just in case someone can help me:

    Thank you so much for your help.

    fs.h:

    #ifndef __FS_H__
    #define __FS_H__
    
    #include "uip.h"
    
    /**
     * An open file in the read-only file system.
     */
    struct fs_file {
      char *data;  /**< The actual file data. */
      int len;     /**< The length of the file data. */
    };
    
    /**
     * Open a file in the read-only file system.
     *
     * \param name The name of the file.
     *
     * \param file The file pointer, which must be allocated by caller and
     * will be filled in by the function.
     */
    int fs_open(const char *name, struct fs_file *file);
    
    #ifdef FS_STATISTICS
    #if FS_STATISTICS == 1
    u16_t fs_count(char *name);
    #endif /* FS_STATISTICS */
    #endif /* FS_STATISTICS */
    
    /**
     * Initialize the read-only file system.
     */
    void fs_init(void);
    
    #endif /* __FS_H__ */
    

    fsdata.h

    #ifndef __FSDATA_H__
    #define __FSDATA_H__
    
    
    #include "uipopt.h"
    struct fsdata_file { const struct fsdata_file *next; const char *name; const char *data; const int len; #ifdef FS_STATISTICS #if FS_STATISTICS == 1 u16_t count; #endif /* FS_STATISTICS */ #endif /* FS_STATISTICS */ };
    struct fsdata_file_noconst { struct fsdata_file *next; char *name; char *data; int len; #ifdef FS_STATISTICS #if FS_STATISTICS == 1 u16_t count; #endif /* FS_STATISTICS */ #endif /* FS_STATISTICS */ };
    #endif /* __FSDATA_H__ */

  • "I post them (headers files) just in case someone can help me"

    The text "file_cgi_files" occurs nowhere in either of those files - so the problem must, obviously, lie elsewhere...

  • there must be a way to implement some filter that would prevent posting of a reply/thread is it contains unformatted code...! That will save you so much heart ache, Andy ;-)

  • I think it would actually be quite hard to make an effective filter that didn't make too many "false hits"...?

    But I still say it's symptomatic of an underlying problem: the instructions are very clearly stated; anyone who's being slack enough to miss them - and to not even notice in the preview - has probably also missed important details about their project for the very same reason

    As I said earlier, Attention to detail is key in this game!