[oi-dev] Strange libgmp effect

Andrzej Szeszo aszeszo at gmail.com
Wed Jun 19 08:30:42 UTC 2013


Hi All

I am probably guilty as I have delivered .so symlinks in
/usr/gcc/4.7/lib pointing at the gcc 4.7 private copies of libgmp,
libmpc and libmpfr.

They are only needed when building gcc itself. One potential
workaround would be to stop delivering them and create required
symlinks temporarily somewhere in gcc's build directtory.

Alexander, can you confirm your program compiles and runs ok after
removing /usr/gcc/4.7/lib/libgmp.so symlink?

Cheers,

Andrzej

On 19 June 2013 06:39, Michael Schuster <michaelsprivate at gmail.com> wrote:
> have you looked at compile-time vs run-time path setting for ld (eg
> LD_LIBRARY_PATH, etc - I'm a little rusty in this respect, so please look in
> the man-page)?
>
> HTH
> Michael
>
>
> On Tue, Jun 18, 2013 at 10:45 PM, Alexander Pyhalov <alp at rsu.ru> wrote:
>>
>> Hello.
>> While testing 3801 bug fix I observed one interestin unrelated GCC effect.
>> We have two gmp libraries:
>> one from library/gmp
>>
>> $ ls -l /usr/lib/libgmp.so*
>> lrwxrwxrwx 1 root root     15 Jun 13 23:28 /usr/lib/libgmp.so ->
>> libgmp.so.3.5.0
>> lrwxrwxrwx 1 root root     15 Jun 13 23:28 /usr/lib/libgmp.so.3 ->
>> libgmp.so.3.5.0
>> -rwxr-xr-x 1 root bin  294528 Jun 13 23:28 /usr/lib/libgmp.so.3.5.0
>>
>> and another coming with gcc
>> $ ls -l  /usr/gcc/4.7/lib/libgmp.so*
>> lrwxrwxrwx 1 root root     16 Jun 13 23:39 /usr/gcc/4.7/lib/libgmp.so ->
>> libgmp.so.10.0.5
>> lrwxrwxrwx 1 root root     16 Jun 13 23:39 /usr/gcc/4.7/lib/libgmp.so.10
>> -> libgmp.so.10.0.5
>> -r-xr-xr-x 1 root bin  577620 Jun 13 23:39
>> /usr/gcc/4.7/lib/libgmp.so.10.0.5
>>
>> Now, when autoconf tries to find libgmp it tries to compile the next
>> program:
>> /* confdefs.h */
>> #define PACKAGE_NAME "FULL-PACKAGE-NAME"
>> #define PACKAGE_TARNAME "full-package-name"
>> #define PACKAGE_VERSION "VERSION"
>> #define PACKAGE_STRING "FULL-PACKAGE-NAME VERSION"
>> #define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
>> #define PACKAGE_URL ""
>> #define HAVE_LIBGMP 1
>> #define HAVE_DECL_MPZ_POWM 1
>> #define HAVE_DECL_MPZ_POWM_SEC 1
>> /* end confdefs.h.  */
>> #include <ctype.h>
>> #include <stdlib.h>
>> #if ((' ' & 0x0FF) == 0x020)
>> # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
>> # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
>> #else
>> # define ISLOWER(c)              (('a' <= (c) && (c) <= 'i')
>> || ('j' <= (c) && (c) <= 'r')                   || ('s' <= (c) && (c) <=
>> 'z'))
>> # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
>> #endif
>>
>> #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
>> int
>> main ()
>> {
>> int i;
>> for (i = 0; i < 256; i++)
>> if (XOR (islower (i), ISLOWER (i))
>> || toupper (i) != TOUPPER (i))
>> return 2;
>> return 0;
>> }
>>
>> with: gcc -o gmp gmp.c -O2 -lgmp
>> The command finishes succesfully but links gmp to libgmp.so.10:
>> $ ldd gmp
>> libgmp.so.10 =>  (file not found)
>> libc.so.1 =>     /lib/libc.so.1
>> libm.so.2 =>     /lib/libm.so.2
>> So, the resulting binary cannot be run.
>>
>> So, I have an ethernal question: who is guilty and what to do?
>>
>> --
>> System Administrator of Southern Federal University Computer Center
>>
>>
>> _______________________________________________
>> oi-dev mailing list
>> oi-dev at openindiana.org
>> http://openindiana.org/mailman/listinfo/oi-dev
>
>
>
>
> --
> Michael Schuster
> http://recursiveramblings.wordpress.com/
>
> _______________________________________________
> oi-dev mailing list
> oi-dev at openindiana.org
> http://openindiana.org/mailman/listinfo/oi-dev




More information about the oi-dev mailing list