Bug 27419 - '-static' for 'gcc libraries' only?
Summary: '-static' for 'gcc libraries' only?
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: driver (show other bugs)
Version: unknown
: P3 enhancement
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-05-04 12:28 UTC by Philippe Schaffnit
Modified: 2006-05-04 15:25 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philippe Schaffnit 2006-05-04 12:28:02 UTC
Hi!

I would be interested in having the "gcc libraries" statically linked to my binary, but still use one shared-object (a commercial library for which no static version is available), so '-static' is not really an option, as far as I can tell...

I haven't been able to pull this off, and got an answer from gcc-help@gcc.gnu.org that it's actually impossible...

Nevertheless, as far as I can tell most commercial compiler allow this, so it's probably technically possible, if it's not too much trouble, I think it would be nice to have...

Thanks!

Philippe

PS: I tried this with
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: /USER/philippe/Irix/Gcc_Sources/configure --prefix=/WORK/philippe/Tools/Gcc --enable-languages=c,fortran --with-mpfr=/WORK/philippe/Tools/Mpfr --with-gmp=/WORK/philippe/Tools/Gmp
Thread model: posix
gcc version 4.2.0 20060504 (experimental)

PPS: it could be related to Bug#: 7516
Comment 1 Pawel Sikora 2006-05-04 13:15:04 UTC
(In reply to comment #0)
> Hi!
> 
> I would be interested in having the "gcc libraries" statically linked to my
> binary, but still use one shared-object (a commercial library for which no
> static version is available), so '-static' is not really an option, as far as I
> can tell...

e.g. libfoo.so is a commercial shared library.

$ ldd libfoo.so
        libc.so.6 => /lib64/libc.so.6 (0x00002b388050d000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

$ cat exec.c
extern void foo();
int main()
{
    foo();
    return 0;
}

$ gcc exec.c -o exec -static-libgcc -Wl,-rpath,. -L. -lfoo

$ ldd exec
        libfoo.so => ./libfoo.so (0x00002b795f7fc000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b795f917000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b795f6e1000)
Comment 2 Philippe Schaffnit 2006-05-04 13:27:50 UTC
Hi!

Thanks a lot!

That's exactly what I was looking for: I don't seem to be able to do the same with libgfortran, though... have I missed something, or should request that?

Thanks!

Philippe

PS: I don't seem to find any reference to that in the documentation: it would probably be worth adding...
Comment 3 Andrew Pinski 2006-05-04 15:22:25 UTC
Configure GCC with --disable-shared instead.
Comment 4 Philippe Schaffnit 2006-05-04 15:25:24 UTC
I hadn't thought about that...

Thanks a lot for your help!

Philippe