Error when compiling with Cygwin

Discussion in 'C++' started by TuPLaD, Aug 25, 2004.

  1. TuPLaD

    TuPLaD Guest

    Hello,
    I just made a little C++ console application:

    #include "iostream"
    using namespace std;

    int main ()
    {
    cout << "Hello Mars !";
    return 0;
    }

    But when i tryed to compile it with Cygwin.

    gcc main.cpp -o main.exe

    It gave me the following error:

    http://users.pandora.be/rz6hkk/cygwin.png

    I heard there is some new *modern* c++ language ?!
     
    TuPLaD, Aug 25, 2004
    #1
    1. Advertising

  2. TuPLaD

    Rolf Magnus Guest

    TuPLaD wrote:

    > Hello,
    > I just made a little C++ console application:
    >
    > #include "iostream"
    > using namespace std;
    >
    > int main ()
    > {
    > cout << "Hello Mars !";
    > return 0;
    > }
    >
    > But when i tryed to compile it with Cygwin.
    >
    > gcc main.cpp -o main.exe


    If you want to compile and link C++ code, use g++, not gcc. Since you
    seem to be using windows, the name might be different (AFAIK, Windows
    doesn't support '+' as part of file names).

    > It gave me the following error:
    >
    > http://users.pandora.be/rz6hkk/cygwin.png


    You made a screenshot of your compiler output!? Why not just paste it
    into the message?

    > I heard there is some new *modern* c++ language ?!


    The last C++ standard version is from 2003, but except for a few minor
    corrections, it's the same as C++98.
     
    Rolf Magnus, Aug 25, 2004
    #2
    1. Advertising

  3. TuPLaD

    Sharad Kala Guest

    "Rolf Magnus" <> wrote in message
    news:cgi1r1$p5a$05$-online.com...
    > TuPLaD wrote:
    >


    > If you want to compile and link C++ code, use g++, not gcc. Since you
    > seem to be using windows, the name might be different (AFAIK, Windows
    > doesn't support '+' as part of file names).


    The name is g++ on Windows too.

    -Sharad
     
    Sharad Kala, Aug 25, 2004
    #3
  4. TuPLaD

    Howard Guest

    "TuPLaD" <> wrote in message
    news:...
    > Hello,
    > I just made a little C++ console application:
    >
    > #include "iostream"
    > using namespace std;
    >
    > int main ()
    > {
    > cout << "Hello Mars !";
    > return 0;
    > }
    >
    > But when i tryed to compile it with Cygwin.
    >
    > gcc main.cpp -o main.exe
    >
    > It gave me the following error:
    >
    > http://users.pandora.be/rz6hkk/cygwin.png
    >

    No way am I clicking on a link like that...who knows what kind of virus I
    might download!

    If you've got a compiler error, either copy&paste it here, or at least tell
    us what it says.

    > I heard there is some new *modern* c++ language ?!


    As opposed to what, the "ancient" C++ language? And what would it have to
    do with the problem? Surely no change has been made to C++ that would cause
    such simple code to fail when it used to work.

    (By the way, the usual method of including standard headers is to enclose
    the name in <> brackets, not "" quotes. I believe that using the brackets
    causes the compiler to search for those headers differently than when using
    quotes. No idea if that's your problem, though, because I don't know what
    error message you're getting.)

    -Howard
     
    Howard, Aug 25, 2004
    #4
  5. TuPLaD wrote:

    > Hello,
    > I just made a little C++ console application:
    >
    > #include "iostream"


    This line should be: #include <iostream>

    > using namespace std;
    >
    > int main ()
    > {
    > cout << "Hello Mars !";
    > return 0;
    > }
    >
    > But when i tryed to compile it with Cygwin.
    >
    > gcc main.cpp -o main.exe
    >
    > It gave me the following error:
    >
    > http://users.pandora.be/rz6hkk/cygwin.png
    >
    > I heard there is some new *modern* c++ language ?!



    --
    Will Twentyman
    email: wtwentyman at copper dot net
     
    Will Twentyman, Aug 25, 2004
    #5
  6. TuPLaD

    Rich Grise Guest

    Rolf Magnus wrote:

    > TuPLaD wrote:
    >
    >> Hello,
    >> I just made a little C++ console application:
    >>
    >> #include "iostream"
    >> using namespace std;
    >>
    >> int main ()
    >> {
    >> cout << "Hello Mars !";
    >> return 0;
    >> }
    >>
    >> But when i tryed to compile it with Cygwin.
    >>
    >> gcc main.cpp -o main.exe

    >
    > If you want to compile and link C++ code, use g++, not gcc. Since you
    > seem to be using windows, the name might be different (AFAIK, Windows
    > doesn't support '+' as part of file names).
    >
    >> It gave me the following error:
    >>
    >> http://users.pandora.be/rz6hkk/cygwin.png

    >
    > You made a screenshot of your compiler output!? Why not just paste it
    > into the message?
    >
    >> I heard there is some new *modern* c++ language ?!

    >
    > The last C++ standard version is from 2003, but except for a few minor
    > corrections, it's the same as C++98.


    He can hit alt-prtsc, but he doesn't know how to copy/paste from a
    command prompt applet. I wonder if 2> works in cmd?

    Cheers!
    Rich
     
    Rich Grise, Aug 25, 2004
    #6
  7. TuPLaD

    Andre Heinen Guest

    On 25 Aug 2004 05:13:38 -0700, (TuPLaD) wrote:
    >#include "iostream"


    I was about to post to tell the OP to use #include <iostream>
    instead of #include "iostream", but after I saw that neither Rolf
    nor Sharad reacted, I hesitated. I tried it, and indeed my
    compiler didn't complain. Yet I was under the impression that
    standard headers should be included with square brackets.

    Stroustrup 9.2.1 says that for standard headers square brackets
    should be used rather than quotes, but I couldn't figure out if
    it is mandatory or just some guideline.

    If I remember correctly, #include "somefile.h" means:
    1) first search for somefile.h in the current directory, and if
    that fails
    2) search the system directories.
    This would explain why my compiler accepted it.

    However, #include <iostream> does not mean that there must be a
    file called iostream: the name may be different, or there may be
    no file at all, depending on the compiler.

    Hence I believe that #include "iostream" may work on one
    compiler, but is not portable, and should be avoided.

    Did I miss something?

    --
    Andre Heinen
    My address is "a dot heinen at europeanlink dot com"
     
    Andre Heinen, Aug 26, 2004
    #7
  8. TuPLaD

    jive Guest

    "Rich Grise" <> wrote in message
    news:ON5Xc.384$yP4.275@trnddc08...
    >
    > > The last C++ standard version is from 2003, but except for a few minor
    > > corrections, it's the same as C++98.


    AFAIK there is only a draft, as the standardisation process is still
    incomplete and new revision of the C++ standard is supposedly due this fall.

    - jive
     
    jive, Aug 26, 2004
    #8
  9. TuPLaD

    Rolf Magnus Guest

    jive wrote:

    >
    > "Rich Grise" <> wrote in message
    > news:ON5Xc.384$yP4.275@trnddc08...
    >>
    >> > The last C++ standard version is from 2003, but except for a few
    >> > minor corrections, it's the same as C++98.

    >
    > AFAIK there is only a draft, as the standardisation process is still
    > incomplete and new revision of the C++ standard is supposedly due this
    > fall.


    See:
    http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110
     
    Rolf Magnus, Aug 26, 2004
    #9
  10. TuPLaD

    TuPLaD Guest

    First of all ->
    I didnt knew how to copy paste from Cygwin's window so i made a
    screenshot
    2) THERE DOESNT EXIST ANY ANY ANY ANY image virusses that can work
    from a site, you will have to download & start it(yes it can go to
    cache :]). So its not a virus.

    Third -> I just compiled it in Linux, and it worked well :D
    I started it, it gave me the text & stuff :]

    Thx for your help all !
     
    TuPLaD, Aug 26, 2004
    #10
  11. Andre Heinen wrote:

    > On 25 Aug 2004 05:13:38 -0700, (TuPLaD) wrote:
    >
    >>#include "iostream"

    >
    >
    > I was about to post to tell the OP to use #include <iostream>
    > instead of #include "iostream", but after I saw that neither Rolf
    > nor Sharad reacted, I hesitated. I tried it, and indeed my
    > compiler didn't complain. Yet I was under the impression that
    > standard headers should be included with square brackets.
    >
    > Stroustrup 9.2.1 says that for standard headers square brackets
    > should be used rather than quotes, but I couldn't figure out if
    > it is mandatory or just some guideline.
    >
    > If I remember correctly, #include "somefile.h" means:
    > 1) first search for somefile.h in the current directory, and if
    > that fails
    > 2) search the system directories.
    > This would explain why my compiler accepted it.
    >
    > However, #include <iostream> does not mean that there must be a
    > file called iostream: the name may be different, or there may be
    > no file at all, depending on the compiler.
    >
    > Hence I believe that #include "iostream" may work on one
    > compiler, but is not portable, and should be avoided.
    >
    > Did I miss something?


    I think that if he used #include "iostream.h" it would work.

    Based on the error messages, it looks like iostream didn't get loaded,
    but the complaint from the compiler comes when he tries to use something
    from iostream that hasn't loaded, specifically std::cout. I've gotten
    similar types of errors in the past from this type of mistake,
    especially when I mis-spell a filename.

    --
    Will Twentyman
    email: wtwentyman at copper dot net
     
    Will Twentyman, Aug 26, 2004
    #11
  12. TuPLaD

    Pete Chapman Guest

    OT: Re: Error when compiling with Cygwin

    TuPLaD wrote:
    > 2) THERE DOESNT EXIST ANY ANY ANY ANY image virusses that can work
    > from a site, you will have to download & start it(yes it can go to
    > cache :]). So its not a virus.


    Just FYI, it's quite possible have arbitrary code executed just by
    loading an image. Take a look at:
    http://www.securitytracker.com/alerts/2004/Feb/1009067.html
    That's just one (out-of-date) example. Granted, it's an exploit not a
    virus. But there's no reason that you couldn't put a virus inside a BMP.
     
    Pete Chapman, Aug 26, 2004
    #12
  13. TuPLaD

    Howard Guest

    "TuPLaD" <> wrote in message
    news:...
    > First of all ->
    > I didnt knew how to copy paste from Cygwin's window so i made a
    > screenshot
    > 2) THERE DOESNT EXIST ANY ANY ANY ANY image virusses that can work
    > from a site, you will have to download & start it(yes it can go to
    > cache :]). So its not a virus.
    >


    You obviously don't live in the MS Windows world! :) Windows has been
    well-known for allowing viruses in simply by clicking on a link. And the
    link shown in the text doesn't always match the actual underlying link
    (because HTML can hide it easily), so just because you have a .png extension
    (whatever that is), doesn't mean it's not something that can execute when I
    link to it. Check any of the dozen or more security notices about Windows
    in the past year. I got a virus on my PC just a month or two ago, simply by
    linking to a web site that had been compromised, and that was a site I
    normally trust and have linked to many times! Basically, my philosophy
    (like many Windows users') is to not click on links unless I know what I'm
    linking to.

    > Third -> I just compiled it in Linux, and it worked well :D
    > I started it, it gave me the text & stuff :]
    >
    > Thx for your help all !


    (BTW, was it the include statement that was the problem?)
     
    Howard, Aug 26, 2004
    #13
  14. TuPLaD

    Rolf Magnus Guest

    TuPLaD wrote:

    > First of all ->
    > I didnt knew how to copy paste from Cygwin's window so i made a
    > screenshot


    Fair enough, though unusual :)

    > 2) THERE DOESNT EXIST ANY ANY ANY ANY image virusses that can work
    > from a site, you will have to download & start it(yes it can go to
    > cache :]). So its not a virus.


    The fact that its name ends in .png alone doesn't mean it's just an
    image. That depends on the mimetype that the http server sends. It
    could easily be a html page with javascript and activex and (insert web
    buzzword here).

    > Third -> I just compiled it in Linux, and it worked well :D


    But surely not with the command line you wrote in your original message.
    If you use gcc for it, the C++ standard library will not be linked in,
    which should result (and does here on my linux box) in similar messages
    to those from your screenshot.
    Try (as I already wrote) g++ instead of gcc. Do you get the same errors
    when using g++ under Cygwin?
     
    Rolf Magnus, Aug 26, 2004
    #14
  15. TuPLaD

    jive Guest

    > "Rolf Magnus" <> wrote in message news:cgk967$soo$00
    > $-online.com...
    > jive wrote:
    >
    > > The last C++ standard version is from 2003, but except for a few
    > > minor corrections, it's the same as C++98.

    >
    > AFAIK there is only a draft, as the standardisation process is still
    > incomplete and new revision of the C++ standard is supposedly due this
    > fall.
    >
    > See:
    > http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?
    > CSNUMBER=38110


    Strange.. I found no mention about this on
    http://www.open-std.org/jtc1/sc22/wg21/ and this
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1638.pdf outdates
    the one available on the ISO site.

    Could someone comment on that?

    - jive


    ---
    [ comp.std.c++ is moderated. To submit articles, try just posting with ]
    [ your news-reader. If that fails, use mailto: ]
    [ --- Please see the FAQ before posting. --- ]
    [ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ]
     
    jive, Aug 26, 2004
    #15
  16. TuPLaD

    Andre Heinen Guest

    On Thu, 26 Aug 2004 10:25:37 -0400, Will Twentyman
    <> wrote:
    >Andre Heinen wrote:
    >> On 25 Aug 2004 05:13:38 -0700, (TuPLaD) wrote:
    >>>
    >>>#include "iostream"

    >> <snip>

    >
    >I think that if he used #include "iostream.h" it would work.
    > <snip>


    His mistake was to use gcc instead of g++. I have the same
    system: when linked correctly, the program works fine with
    "iostream". With "iostream.h", it works fine too, but the
    compiler gives a warning.

    What puzzles me is that I thought it was illegal to use double
    quotes to include standard headers. I'd like someone who knows
    better than me to confirm.

    --
    Andre Heinen
    My address is "a dot heinen at europeanlink dot com"
     
    Andre Heinen, Aug 27, 2004
    #16
  17. jive wrote:
    >>"Rolf Magnus" <> wrote in message news:cgk967$soo$00
    >>$-online.com...
    >>jive wrote:
    >>
    >>
    >>>The last C++ standard version is from 2003, but except for a few
    >>>minor corrections, it's the same as C++98.

    >>
    >>AFAIK there is only a draft, as the standardisation process is still
    >>incomplete and new revision of the C++ standard is supposedly due this
    >>fall.
    >>
    >>See:
    >>http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?
    >>CSNUMBER=38110

    >
    >
    > Strange.. I found no mention about this on
    > http://www.open-std.org/jtc1/sc22/wg21/ and this
    > http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1638.pdf outdates
    > the one available on the ISO site.
    >
    > Could someone comment on that?
    >
    > - jive


    The C++ Committee worked on addressing errors in the original 1998 C++
    standard (see this newsgroup's FAQ list about Defect Reports), and is
    now working on a future C++ standard.

    A Technical Report (TR1) was released containing fixes to Defect
    Reports. The TR was folded into a new version of the C++ standard,
    dated 2003. That is now the official standard (ISO/IEC 14882:2003). It
    is available for purchase from ISO (at the above addres), from
    www.ansi.org, and from www.incits.org.

    In the process of creating a standard (or TR), the committee creates
    many drafts, carefully labeled as drafts. The n1638.pdf paper is one
    example.

    These drafts have no official weight. They are known to contain errors
    and inconsistencies, and to be incomplete. In fact these drafts say so
    on the first page!

    ---
    Steve Clamage,

    ---
    [ comp.std.c++ is moderated. To submit articles, try just posting with ]
    [ your news-reader. If that fails, use mailto: ]
    [ --- Please see the FAQ before posting. --- ]
    [ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ]
     
    Steve Clamage, Aug 28, 2004
    #17
  18. TuPLaD wrote:

    > Hello,
    > I just made a little C++ console application:
    >
    > #include "iostream"


    What is this. this one ought to be

    #include <iostream>

    > using namespace std;


    Well, this serves good for academic purposes. But for all practical
    purposes, you would not want to bring everything in std namespace to
    your application.

    >
    > int main ()
    > {
    > cout << "Hello Mars !";


    u can write this one as std::cout << ....


    > return 0;



    While your intentions are certainly good when you write this, the
    better way to do this is

    return EXIT_SUCCESS;

    / EXIT_FAILURE depending upon what you want to do.

    > }
    >
    > But when i tryed to compile it with Cygwin.
    >
    > gcc main.cpp -o main.exe


    Why on earth are you using gcc (That is supposed to be a C compiler).
    Use g++ .

    >
    > It gave me the following error:
    >
    > http://users.pandora.be/rz6hkk/cygwin.png


    I couldnt access that.

    >
    > I heard there is some new *modern* c++ language ?!


    Might be you are talking about a library written in C++.
    --
    Karthik
     
    Karthiik Kumar, Aug 28, 2004
    #18
  19. TuPLaD

    Rolf Magnus Guest

    Karthiik Kumar wrote:

    > TuPLaD wrote:
    >
    >> Hello,
    >> I just made a little C++ console application:
    >>
    >> #include "iostream"

    >
    > What is this. this one ought to be
    >
    > #include <iostream>
    >
    >> using namespace std;

    >
    > Well, this serves good for academic purposes. But for all practical
    > purposes, you would not want to bring everything in std namespace to
    > your application.
    >
    >>
    >> int main ()
    >> {
    >> cout << "Hello Mars !";

    >
    > u can write this one as std::cout << ....
    >
    >
    >> return 0;

    >
    >
    > While your intentions are certainly good when you write this, the
    > better way to do this is
    >
    > return EXIT_SUCCESS;
    >
    > / EXIT_FAILURE depending upon what you want to do.
    >
    >> }
    >>
    >> But when i tryed to compile it with Cygwin.
    >>
    >> gcc main.cpp -o main.exe

    >
    > Why on earth are you using gcc (That is supposed to be a C
    > compiler).
    > Use g++ .


    Just FYI, gcc is not supposed to be a C compiler. It's rather the
    multi-language frontend that tries to guess the language from the file
    name of the source file (if you don't explicitly specify it).
    The problem is the linking step, since the linker doesn't know the
    language that an object file was generated from. Therefore, linking
    with gcc assumes C and therefore omits the command line arguments that
    would be needed for C++.
    However, it's best to not bother and just always use g++ whenever you
    have C++ code.
     
    Rolf Magnus, Aug 28, 2004
    #19
  20. TuPLaD

    TuPLaD Guest

    Karthiik Kumar <> wrote in message news:<413018ab$1@darkstar>...
    > TuPLaD wrote:
    >
    > > Hello,
    > > I just made a little C++ console application:
    > >
    > > #include "iostream"

    >
    > What is this. this one ought to be
    >
    > #include <iostream>
    >
    > > using namespace std;

    >
    > Well, this serves good for academic purposes. But for all practical
    > purposes, you would not want to bring everything in std namespace to
    > your application.
    >
    > >
    > > int main ()
    > > {
    > > cout << "Hello Mars !";

    >
    > u can write this one as std::cout << ....
    >
    >
    > > return 0;

    >
    >
    > While your intentions are certainly good when you write this, the
    > better way to do this is
    >
    > return EXIT_SUCCESS;
    >
    > / EXIT_FAILURE depending upon what you want to do.
    >
    > > }
    > >
    > > But when i tryed to compile it with Cygwin.
    > >
    > > gcc main.cpp -o main.exe

    >
    > Why on earth are you using gcc (That is supposed to be a C compiler).
    > Use g++ .
    >
    > >
    > > It gave me the following error:
    > >
    > > http://users.pandora.be/rz6hkk/cygwin.png

    >
    > I couldnt access that.
    >
    > >
    > > I heard there is some new *modern* c++ language ?!

    >
    > Might be you are talking about a library written in C++.


    I replaced the image to: http://users.pandora.be/rz6hkk/img/cygwin.png

    I compiled it with g++ so it worked.

    About the image virusses, well, i didnt had that much virusses, 1 or
    2, and some friend of mine changed the source of mydoom a little bit
    and gave it to me to "test".
    and he didnt had a removal , so had to remove it myself :(

    you say its a virus, but why the HELL do you think about it ? look at
    the first answer, he clicked on the image, nothing happened ....
    whats the problem lol ?


    anyway :D
    its solved :p
    g++ main.cpp -o main.exe worked well in linux , also executed it in
    console :)
     
    TuPLaD, Aug 28, 2004
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    463
  2. Replies:
    0
    Views:
    434
  3. WELCOME to

    , Sep 3, 2003, in forum: Python
    Replies:
    1
    Views:
    515
    Robin Becker
    Sep 5, 2003
  4. Replies:
    0
    Views:
    416
  5. capes
    Replies:
    0
    Views:
    342
    capes
    Oct 4, 2006
Loading...

Share This Page