: multiple definition of `main'

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • a

    : multiple definition of `main'

    Don't know why this compilation generated, I'm sure no 2 mains exist:

    make votei
    gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
    vote.c: In function `main':
    vote.c:254: warning: passing arg 2 of `hungarian_init ' from incompatible
    pointer type
    vote.c: In function `main':
    vote.c:254: warning: passing arg 2 of `hungarian_init ' from incompatible
    pointer type
    /tmp/ccsVGl95.o(.tex t+0x0): In function `main':
    : multiple definition of `main'
    /tmp/ccSVKJyx.o(.tex t+0x0): first defined here
    collect2: ld returned 1 exit status
    make: *** [votei] Error 1


    Makefile:
    CC = gcc
    AR = ar

    CFLAGS = -O3 -Wall -I.
    LDFLAGS = -L. -lhungarian

    all: libhungarian.a hungarian_test

    votei: vote.c datamanager.c $(HUNGARIANLIB)
    $(CC) $(CFLAGS) vote.c datamanager.c assignmentoptim al.c -o $@ $<
    $(LDFLAGS)

    votei: vote.c datamanager.c $(HUNGARIANLIB)
    $(CC) vote.c datamanager.c -o $@ $< $(LDFLAGS)

    why comp.lang.c faq hasn't covered compilation topic? Where should I go for
    more information?


  • jameskuyper@verizon.net

    #2
    Re: : multiple definition of `main'

    a wrote:
    Don't know why this compilation generated, I'm sure no 2 mains exist:
    You may be sure of this fact, but gcc seems to disagree. It would be
    much easier to figure out whether you or gcc is right, if you had
    actually bothered to give us copies of your code.

    Comment

    • santosh

      #3
      Re: : multiple definition of `main'

      a wrote:
      Don't know why this compilation generated, I'm sure no 2 mains exist:
      <snip>
      /tmp/ccsVGl95.o(.tex t+0x0): In function `main':
      : multiple definition of `main'
      /tmp/ccSVKJyx.o(.tex t+0x0): first defined here
      collect2: ld returned 1 exit status
      make: *** [votei] Error 1
      <snip>

      The above message clearly shows that two different object files are
      exporting main() and therefore the linker is unable to decide which one
      to use.

      I am guessing that there is some mistake somewhere in your makefile or
      conditional compilation directives that is allowing this to happen.

      Without more information and relevant code we really cannot say anything
      further.
      why comp.lang.c faq hasn't covered compilation topic? Where should I
      go for more information?
      The comp.lang.c FAQ does not cover "compilatio n" because the details are
      inherently implementation specific and this group tries to restrict
      itself to Standard C. There are simply too many compilers with too many
      idiosyncrasies to deal with in a FAQ.

      You should ask for help in a group devoted to your platform or compiler.
      GCC has several groups among which is <news:gnu.gcc.h elp>.

      Comment

      • jacob navia

        #4
        Re: : multiple definition of `main'

        a wrote:
        Don't know why this compilation generated, I'm sure no 2 mains exist:
        >
        make votei
        gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
        You have vote.c TWICE in the command line. Hence you define
        main twice...



        --
        jacob navia
        jacob at jacob point remcomp point fr
        logiciels/informatique

        Comment

        • Richard Tobin

          #5
          Re: : multiple definition of `main'

          In article <5ef5451a-ba22-4654-a02a-e1873e3a16b1@b4 0g2000prf.googl egroups.com>,
          <jameskuyper@ve rizon.netwrote:
          >a wrote:
          >You may be sure of this fact, but gcc seems to disagree. It would be
          >much easier to figure out whether you or gcc is right, if you had
          >actually bothered to give us copies of your code.
          Actually, he gave us all the information we need, as Jacob spotted.

          -- Richard


          --
          "Considerat ion shall be given to the need for as many as 32 characters
          in some alphabets" - X3.4, 1963.

          Comment

          • jameskuyper@verizon.net

            #6
            Re: : multiple definition of `main'

            Richard Tobin wrote:
            In article <5ef5451a-ba22-4654-a02a-e1873e3a16b1@b4 0g2000prf.googl egroups.com>,
            <jameskuyper@ve rizon.netwrote:
            a wrote:
            >
            You may be sure of this fact, but gcc seems to disagree. It would be
            much easier to figure out whether you or gcc is right, if you had
            actually bothered to give us copies of your code.
            >
            Actually, he gave us all the information we need, as Jacob spotted.
            You're right - I should have read more carefully.

            Still, he should have provided source code, just in case the problem
            was in the code itself, and not on the command line.

            Comment

            • a

              #7
              Re: : multiple definition of `main'

              Yes you are right. It is nothing dealt with the codes...


              Comment

              • Mark McIntyre

                #8
                Re: : multiple definition of `main'

                jacob navia wrote:
                a wrote:
                >Don't know why this compilation generated, I'm sure no 2 mains exist:
                >>
                >make votei
                >gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
                >
                You have vote.c TWICE in the command line. Hence you define
                main twice...
                Well spotted.

                Comment

                • CBFalconer

                  #9
                  Re: : multiple definition of `main'

                  a wrote:
                  >
                  Yes you are right. It is nothing dealt with the codes...
                  Meaningless. See below.

                  --
                  If you want to post a followup via groups.google.c om, ensure
                  you quote enough for the article to make sense. Google is only
                  an interface to Usenet; it's not Usenet itself. Don't assume
                  your readers can, or ever will, see any previous articles.
                  More details at: <http://cfaj.freeshell. org/google/>



                  --
                  Posted via a free Usenet account from http://www.teranews.com

                  Comment

                  • Bart

                    #10
                    Re: : multiple definition of `main'

                    On Nov 29, 12:18 am, Mark McIntyre <markmcint...@s pamcop.netwrote :
                    jacob navia wrote:
                    a wrote:
                    Don't know why this compilation generated, I'm sure no 2 mains exist:
                    >
                    make votei
                    gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
                    >
                    You have vote.c TWICE in the command line. Hence you define
                    main twice...
                    >
                    Well spotted.
                    I suppose it's out of the question for gcc to detect duplicate source
                    filenames? (Comparing 2 filespecs is that trivial but for something as
                    sophisticated as gcc?..)

                    Bart

                    Comment

                    • Kenneth Brody

                      #11
                      Re: : multiple definition of `main'

                      Bart wrote:
                      >
                      On Nov 29, 12:18 am, Mark McIntyre <markmcint...@s pamcop.netwrote :
                      jacob navia wrote:
                      a wrote:
                      >Don't know why this compilation generated, I'm sure no 2 mains exist:
                      >make votei
                      >gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
                      You have vote.c TWICE in the command line. Hence you define
                      main twice...
                      Well spotted.
                      >
                      I suppose it's out of the question for gcc to detect duplicate source
                      filenames? (Comparing 2 filespecs is that trivial but for something as
                      sophisticated as gcc?..)
                      While this is OT here, what happens with something like:

                      gcc file.c -DSOMETHING file.c

                      Perhaps file.c will compile differently in the second case, due to
                      SOMETHING now being defined. (Not that I'm advocating this to be
                      good practice in a real-world environment, mind you.)

                      --
                      +-------------------------+--------------------+-----------------------+
                      | Kenneth J. Brody | www.hvcomputer.com | #include |
                      | kenbrody/at\spamcop.net | www.fptech.com | <std_disclaimer .h|
                      +-------------------------+--------------------+-----------------------+
                      Don't e-mail me at: <mailto:ThisIsA SpamTrap@gmail. com>


                      Comment

                      • Kenny McCormack

                        #12
                        Re: : multiple definition of `main'

                        In article <474EF153.8242C 62F@spamcop.net >,
                        Kenneth Brody <kenbrody@spamc op.netwrote:
                        >Bart wrote:
                        >>
                        >On Nov 29, 12:18 am, Mark McIntyre <markmcint...@s pamcop.netwrote :
                        jacob navia wrote:
                        a wrote:
                        >Don't know why this compilation generated, I'm sure no 2 mains exist:
                        >
                        >make votei
                        >gcc vote.c datamanager.c -o votei vote.c -L. -lhungarian
                        >
                        You have vote.c TWICE in the command line. Hence you define
                        main twice...
                        >
                        Well spotted.
                        >>
                        >I suppose it's out of the question for gcc to detect duplicate source
                        >filenames? (Comparing 2 filespecs is that trivial but for something as
                        >sophisticate d as gcc?..)
                        >
                        >While this is OT here, what happens with something like:
                        >
                        gcc file.c -DSOMETHING file.c
                        >
                        >Perhaps file.c will compile differently in the second case, due to
                        >SOMETHING now being defined. (Not that I'm advocating this to be
                        >good practice in a real-world environment, mind you.)
                        Right - that's the counter-example. It is certainly possible to create
                        a fully conforming situation where something would be broken if the
                        compiler refused to do what it is told.

                        Comment

                        Working...