LINUX.ORG.RU

Почему нет libc.so?

 


0

1

На Centos 7 встроенный gcc имеет версию 4.8.2, решил проапгрейдить ее до 13.2.0 из исходников, сделав такую конфигурацию:

../gcc-13.2.0/configure –enable-languages=c,c++ –with-multilib-list=m32,m64

после компиляции и установки (инсталлировалось в /usr/local/) получил такой набор библиотек:

[ravil@localhost ~]$ sudo find /usr -type f -name libstdc++.so.6.[0-9]?[0-9]?
/usr/lib64/libstdc++.so.6.0.19
/usr/local/lib/libstdc++.so.6.0.32
/usr/local/lib64/libstdc++.so.6.0.32

[ravil@localhost ~]$ sudo find /usr -type f -name libc.so*
/usr/lib/libc.so
/usr/lib64/libc.so

То есть новые с++ библиотеки появились а с - нет. Реально они вообще в 13.2.0 нигде не создались, почему так?



Последнее исправление: Hunter1972 (всего исправлений: 2)

libc это системная библиотека для всего, а libstdc++ это компиляторный модуль для поддержки скомпилированных им с++-прог во время их выполнения - это совершенно разные штуки.

libc никаким боком не часть компилятора, это центральная библиотека операционной системы, второй по важности после ядра компонент.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Ясно, спасибо, значит название меня сбило с толку. Не очевидно что она к компилятору не имеет отношения. То есть версия libc фактически определяется версией ОС? Она при апдейтах не заменяется? Она может конфликтовать со свежей libstdc++?

Hunter1972
() автор топика
Ответ на: комментарий от Hunter1972

Она может конфликтовать со свежей libstdc++?

Не может.

И вообще, для centos 7 не надо самому собирать gcc. Его можно взять из devtoolset-12, который предоставляется ораклом: https://yum.oracle.com/repo/OracleLinux/OL7/SoftwareCollections/x86_64/ (https://docs.oracle.com/cd/F61410_01/scl-user/OL-SCL-USER.pdf)

rupert ★★★★★
()

Современные операционные системы это виртуальные машины для языка Си. Стандартная библиотека языка си, по этой причине, входит в их состав. В случае linux это glibc(не путать с glib).

lovesan ★★★
()