опция gcc для игнорирования зависимости libstdc .so.5

#linux #gcc #shared-libraries

#linux #gcc #разделяемые библиотеки

Вопрос:

после создания общей библиотеки с использованием gcc общая библиотека создается нормально, но когда я выдаю «ldd», это дает мне зависимость от «libstdc .so.5». есть ли какой-либо способ сообщить компилятору, чтобы я установил зависимость от файла gcc so

 # ldd libtest.so 
            libstdc  .so.5 =>        /opt/gcc/libstdc  .so.5
            libsocket.so.1 =>        /lib/libsocket.so.1
            libnsl.so.1 =>   /lib/libnsl.so.1
            libc.so.1 =>     /lib/libc.so.1
            libmp.so.2 =>    /lib/libmp.so.2
            libmd.so.1 =>    /lib/libmd.so.1
            libscf.so.1 =>   /lib/libscf.so.1
            libdoor.so.1 =>  /lib/libdoor.so.1
            libuutil.so.1 =>         /lib/libuutil.so.1
            libgen.so.1 =>   /lib/libgen.so.1
            libm.so.2 =>     /lib/libm.so.2
            /platform/SUNW,SPARC-Enterprise-T5220/lib/libc_psr.so.1
            /platform/SUNW,SPARC-Enterprise-T5220/lib/libmd_psr.so.1
  

Какую опцию компилятора я должен указать, чтобы игнорировать зависимости, такие как «libstdc .so.5»?

Комментарии:

1. Он помечен как Linux, однако, похоже, вы находитесь на Solaris, не так ли?

Ответ №1:

после создания общей библиотеки с использованием gcc общая библиотека создается нормально, но когда я выдаю «ldd», это дает мне зависимость от «libstdc .so.5»

gcc не связывает libstdc автоматически, это делает g . Итак, либо вы связываетесь с g , либо передаете -lstdc опцию компоновщика.

У вас есть несколько вариантов:

  • Создайте и свяжите с gcc помощью, not g , чтобы убедиться, что libstdc не подключается автоматически. Не передавайте -lstdc опцию компоновщика. Очевидно, что это работает только с C кодом.
  • g Статически создавайте и связывайте libstdc и связывайте его с помощью -static-libstdc опции link stage .

Комментарии:

1. # g -lstdc -o first3 first.cpp [root@aninath-общая библиотека lnx]# ldd first3 libstdc .so.6 => /usr/lib64/libstdc .so.6 (0x0000003c64600000) libm.so.6 => /lib64/libm.so.6 (0x0000003c5e200000) libgcc_s.so.1 => /lib64/ libgcc_s.so.1 (0x0000003c64200000) libc.so.6 => /lib64/ libc.so.6 (0x0000003c5de00000) /lib64/ld-linux-x86-64.so.2 (0x0000003c5ce00000)

2. ]# g -static-libstdc -o first3 first.cpp g : нераспознанный параметр ‘-static-libstdc ‘

3. Чувак, тебе не понравилось, как я сказал. Прочитайте еще раз.

4. еще одна вещь, которую я хотел бы знать, можем ли мы узнать из файла «so», как он генерируется с помощью g или gcc

5. @anish: man g сказал бы тебе g -print-file-name=libstdc .so