Как мне узнать, на какую версию libc ссылается мое приложение?
При создании приложения с использованием g++ я не передаю явно библиотеку libc как библиотеку для ссылки так же, как для других библиотек (например, для передачи -lpthread например). Я знаю, что у libc есть такое название libc.so.6 но я знаю, что на самом деле это не библиотека, а что-то вроде указателя на другую версию libc (например, libc-2.15.so). У меня вопрос: если на моем компьютере было несколько версий libc, как я могу определить, какая из них на самом деле связана с помощью libc.so.6,
1 ответ
Решение
ldd должен быть инструментом по вашему выбору. Это дает вам общую библиотеку на самом деле связаны.
confus@confusion:~/misc/test$ ldd -r -v testendian
linux-vdso.so.1 => (0x00007fffbcfff000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5a4c5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1a5a8a5000)
Version information:
./testendian:
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
В случае с libc вы можете просто запустить .so файл и будет сказано версию библиотеки.
confus@confusion:~/misc/test$ /lib/x86_64-linux-gnu/libc.so.6
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.