#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
помощью, notg
, чтобы убедиться, что 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