Menu

#658 do not link to stdc++ when using aCC

closed-fixed
5
2014-07-28
2007-07-23
No

On HPUX, when both gcc and aCC are installed, libstdc++ is available, but should only be used when compiling with gcc.

However, when compiling with aCC, there is this:

Checking for C library stdc++... yes

And then later during the link:

-lstdc++

I'm not sure of the best way to fix this.

Discussion

  • David Everly

    David Everly - 2007-07-23
    • summary: do not linke to stdc++ when using aCC --> do not link to stdc++ when using aCC
     
  • Amir Szekely

    Amir Szekely - 2007-07-23

    Logged In: YES
    user_id=584402
    Originator: NO

    It should check for stdc++ with the environment which should already be set to use aCC. Maybe aCC also has stdc++? What happens if you use it? Does it fail linkage?

     
  • David Everly

    David Everly - 2007-07-23

    Logged In: YES
    user_id=1113403
    Originator: YES

    It should not check for stdc++ when the environment is already aCC, because it is found, and then when used later to actually link, causes link failures (or possibly bad behavior at runtime, which would be more insidious).

    aCC takes care of linking in what it needs already without the explicit '-l' (and possibly gcc too). While it doesn't show static libs, ldd of hpux ia64 compiled with gcc and another one compiled with aCC on the same host can illustrate this:

    gcc:
    libunalign.so.1 => /usr/lib/hpux32/libunalign.so.1
    libpthread.so.1 => /usr/lib/hpux32/libpthread.so.1
    libstdc++.so.6 => /opt/hp-gcc-4.1.2/lib/gcc/ia64-hp-hpux11.23/4.1.2/../../../libstdc++.so.6
    libiconv.so => /usr/local/lib/hpux32/libiconv.so
    libm.so.1 => /usr/lib/hpux32/libm.so.1
    libgcc_s.so.0 => /opt/hp-gcc-4.1.2/lib/gcc/ia64-hp-hpux11.23/4.1.2/../../../libgcc_s.so.0
    libunwind.so.1 => /usr/lib/hpux32/libunwind.so.1
    libc.so.1 => /usr/lib/hpux32/libc.so.1
    libc.so.1 => /usr/lib/hpux32/libc.so.1
    libunwind.so.1 => /usr/lib/hpux32/libunwind.so.1
    libc.so.1 => /usr/lib/hpux32/libc.so.1
    libuca.so.1 => /usr/lib/hpux32/libuca.so.1
    libdl.so.1 => /usr/lib/hpux32/libdl.so.1

    aCC:
    libunalign.so.1 => /usr/lib/hpux32/libunalign.so.1
    libpthread.so.1 => /usr/lib/hpux32/libpthread.so.1
    libiconv.so => /usr/local/lib/hpux32/libiconv.so
    libstd_v2.so.1 => /usr/lib/hpux32/libstd_v2.so.1
    libCsup.so.1 => /usr/lib/hpux32/libCsup.so.1
    libm.so.1 => /usr/lib/hpux32/libm.so.1
    libunwind.so.1 => /usr/lib/hpux32/libunwind.so.1
    libc.so.1 => /usr/lib/hpux32/libc.so.1
    libdl.so.1 => /usr/lib/hpux32/libdl.so.1
    libc.so.1 => /usr/lib/hpux32/libc.so.1
    libuca.so.1 => /usr/lib/hpux32/libuca.so.1

     
  • David Everly

    David Everly - 2007-07-23

    Logged In: YES
    user_id=1113403
    Originator: YES

    I've just verified with gcc 4.1.2 on both linux and hpux ia64 that using '-lstdc++' is not needed to build makensis--the compiler adds it in (similar to aCC).

     
  • Amir Szekely

    Amir Szekely - 2007-07-23
    • status: open --> closed-fixed
     
  • Amir Szekely

    Amir Szekely - 2007-07-23

    Logged In: YES
    user_id=584402
    Originator: NO

    Well, not even gcc-2.95 (which isn't really capable of building NSIS right now) doesn't seem to need stdc++. So off it goes...

    I don't remember why I added it though. It might got into the build sometime when g++ wasn't used for linking.

     

Log in to post a comment.