LINUX.ORG.RU

glibc - лежат только тесты. Где лежит сама библиотека?

 


1

2

Всем привет! Я произвел поиск на убунту 19,01, искал glibc. Нашел какие-то тесты, там лежат файлы с подобным названием: glibc2.m4. Странно это. Где лежит сама библиотека? Где в том числе тела функций библиотеки? Вообще бред, библиотека должна лежать в папке glibc, а лежит в папке aclocal. Что означает имя папки aclocal?



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

/usr/lib64/glibc-2.31, это не в убунту, но что то похожее должно быть у тебя

spawn_sp ★★★★
()
Ответ на: комментарий от kss

/usr/lib64/glibc-2.31 у меня там только одна ссылка (Ссылка на Неизвестен). Как я понял еще и мусорная ссылка.

kss - вот поэтому и бардак, так что ни чего найти не возможно. Каждая библиотека или проект должны лежать в своей папке, в данном случае в папке glibc. Если файл один, то он называться к примеру должен glibc.

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

Нет. Библиотеки лежат кучей в дире с библиотеками, исполняемые файлы — в дире с исполняемыми файлами. Бросай вендовые привычки, они тебе только мешают. И мамку папки тоже бросай.

mord0d ★★★★★
()

Эта библиотека должна лежать в /lib/архитектура/libc.so.<цифры>

EXL ★★★★★
()
Ответ на: комментарий от wadic2

Потому что:

$ /lib64/libc.so.6
GNU C Library (GNU libc) stable release version 2.17, by Roland McGrath et al.
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.8.5 20150623 (Red Hat 4.8.5-39).
Compiled on a Linux 3.10.0 system on 2020-03-31.
Available extensions:
	The C stubs add-on version 2.1.2.
	crypt add-on version 2.1 by Michael Glad and others
	GNU Libidn by Simon Josefsson
	Native POSIX Threads Library by Ulrich Drepper et al
	BIND-8.2.3-T5B
	RT using linux kernel aio
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>
EXL ★★★★★
()
Ответ на: комментарий от wadic2

Почему файл называется libc-2.31.so, а не glibc-2.31.so?

Обратная совместимость?

X512 ★★★★★
()
Ответ на: комментарий от EXL

Перевел с помощью переводчика. К чему Вы мне это дали? Вещи должны называться своими именами, если glibc, то glibc (навсегда). Еще это бинарик, а мне нужны тела функций библиотеки, объявления функций.

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

объявления функций

/usr/include/

тела функций библиотеки

Это вообще к исходникам.

saahriktu ★★★★★
()
Ответ на: комментарий от wadic2

Еще это бинарик

Это не бинарник, а библиотека которая может исполняться как бинарник. Такова особенность libc.

а мне нужны тела функций библиотеки

$ nm -D /lib64/libc.so.6

объявления функций.

См. /usr/include обычно имеют вид std*.h.

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

«Такова особенность libc» - можно подробней?

«nm -D /lib64/libc.so.6» - тут только имена функций, что за значения в 1 и 2-м столбиках? А сам код функций где можно посмотреть?

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

Это что, троллинг тупостью?

«Такова особенность libc» - можно подробней?

  1. https://unix.stackexchange.com/questions/223385/why-and-how-are-some-shared-libraries-runnable-as-though-they-are-executables

А сам код функций где можно посмотреть?

  1. В исходниках glibc, в дизассемблере:
$ objdump -S /lib64/libc.so.6 | less
EXL ★★★★★
()
Ответ на: комментарий от wadic2

Каждая библиотека или проект должны лежать в своей папке, в данном случае в папке glibc.

Есть GoboLinux, где так и сделано.

X512 ★★★★★
()

В системах с пакетным менеджером искать файлы конкретного пакета можно с его помощью:

На deb-системах, например убунте:

dpkg -L glibc

На rpm соответственно: rpm -ql glibc

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

https://www.gnu.org/software/libc/

Официальный сайт. Там есть все ссылки. Установить исходники glibc в свою систему можно установив специальный source-пакет с ними и рецептом сборки, из которого потом собирается deb-пакет, содержащий glibc.

Как это сделать – смотри официальную документацию к своему дистрибутиву. Кратко как-то так: https://askubuntu.com/a/28373

P.S. Исходники, компилятор и заголовочные файлы часто вырезают из end-user дистрибутивов, вроде Ubuntu, потому что они полезны лишь разработчикам, которые сами скачают и установят все нужное.

EXL ★★★★★
()
Ответ на: комментарий от X512

Хочется определиться, я спрашивал о glibc, а мне продают libc! Почему названия разнятся? X512 ★ ответил что совместимость может быть, но я ни о чем таком не читал. Да и снова к теме правильности названий. Вот glibc и glibc2 могут быть совместимы или не совместимы, в libc - это читается как совсем другая библиотека. Еще вопрос, ну пусть у нас библиотека libc-2.31.so, а это что еще за хрень: libc.so.6 !? Говорим о libc-2.31.so и тут всплывает libc.so.6. Я не вундеркинд, поясните что это и почему так, у меня в этой области (знаю веб хорошо, еще кое-что) знаний почти нет и меня это все путает.

gobolinux - да, интересный проект, если там все в таком умном подходе сделано, то процветания проекту. В самой убунту где посмотреть исходники?

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

В самой убунту где посмотреть исходники?

Нигде, их надо руками устанавливать.

Хочется определиться, я спрашивал о glibc, а мне продают libc!

glibc (GNU libc) - одна из реализаций libc. Есть ещё musl libc. Бинарник или по крайней мере символьная ссылка на бинарник там также называется.

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

Из пакетов «для пользователя» вырезают, а вообще из дистрибутива — нет. Ты же не про первое говорил, а про второе.

i-rinat ★★★★★
()
Ответ на: комментарий от X512

«Нигде, их надо руками устанавливать.» - то есть после установки убунту их в природе не бывает?

«glibc (GNU libc) - одна из реализаций libc.» - ясно, но как то бардашно. Я правильно понимаю, что libc и glibc это одно и тоже? Хотя меня самого воротит от этого вопроса, вещи должны назваться своими именами. В терминале я ввел: ldd –version и узнал что у меня glibc, но как я и писал я нашел только libc-2.31.so и libc.so.6. Ну с libc-2.31.so допустим понятно, а libc.so.6 что это?

wadic2
() автор топика
Ответ на: комментарий от i-rinat

Кривовато сформулировал. Но дальше-то я продолжил, что разработчики доустанавливают все вырезанное и нужное им для работы. dev-пакетами, apt source, apt build-dep и т. д.

EXL ★★★★★
()
Ответ на: комментарий от wadic2

Я правильно понимаю, что libc и glibc это одно и тоже?

Нет. glibc, uclibc, musl, … – реализации libc.

Siborgium ★★★★★
()
Ответ на: комментарий от wadic2

а исходники 215 мб

Как вы мерили? Вместе с директорией «.git»? Там хранится история изменений и дубликаты исходников.

glibc-2.32.tar.gz 2020-08-05 23:34 31M

https://ftp.gnu.org/gnu/libc/?C=M;O=D

UPDATE: распакованный архив и правда примерно столько места занимает. Там тесты и юникодные таблицы много места занимают. «ChangeLog.old» 13.8 МБ занимает. Есть код для поддержки разных архитектур и платформ, который одновременно весь не используется.

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

Я качал отсюда: http://mirror.tochlab.net/pub/gnu/libc/ Конкретно качал архив glibc-2.30.tar.xz После чего распаковки померил его. Странно то что при скачивании не предлагается выбрать 32 бит или 64. Вы пишите что там кода под разные архитектуры и платформы. Как мне понять что мне нужно (убунту 19,01 - 64 бит у меня), какие папки и файлы мне нужны? Первым делом хочу скомпилировать и заменить текущий libc-2.30.so на новый libc-2.30.so и посмотреть как будет работать ОС. Если все норм, то можно модифицировать glibc. Как мне скомпилировать glibc? Я умею компилировать только одиночные файлы. Вообще мне нужно модифицировать sys_open(). Нужно сделать проверку на то, какое имя файла (или директории) в параметре приходит. Я вообще ни знаю, удасться ли это, вот тут пишет человек, что ему по крайней мере частично это удалось: https://fooobar.com/questions/2122050/override-libc-open-library-function

Там сишная open(), но я тоже пока мозги тупые, хотел ее модифицировать, но по идее нужна sys_open().

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

Как-то раз Ричи и Томпсон набухались и написали юникс, ц, либц и вот это все. Потом пришел РМС, набухался и сказал «Это прикольно, но не опенсорс!» и написал gcc, glibc и вот это все. Еще пришли бухие бздуны, сказали «жопоель нинужно!» и написали бздовый либц. Потом пришел эппл, сказал «инновации!» и спер форкнул бздовый либц себе. Потом пришли товарищи из гугла, сказали «Недостаточно зондов!» и написали бионик либц в андроид.

Весь этот зоопарк называется либц.

Зы

Написано от балды, порядок и мотивация могут отличаться.

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

Ну то что там бардак у меня мало было сомнений. Но все же, если я в данный момент работаю с glibc, то она должна назваться glibc, а не libc или еще как-то. То что Вы написали что это разные библиотеки, вот об этом я и говорю. Ситуацию я вижу так: появился libc, на его базе сделали glibc. Ну тогда везде писать нужно glibc, а не libc. По видимому бардак. Товарищи что писали glibc, по видимому не видят разницы между glibc и libc. Им то может понятно, зайти в папки, да проверь что это, а нам - попробуй определи. На будущее, если ли разумная библиотека, на базе которой можно ОС сделать?

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

Она и называется glibc, а не libc. Или ты опять про имя файла? Файл называется libc.so.6 потому-что программы под линухом по дефолту линкуют libc.so.6. Никогда не видел как преакт на реакт алиасят что-ли?

На будущее, если ли разумная библиотека, на базе которой можно ОС сделать?

Конечно. http://rumpkernel.org/

suuaq
()

В Synaptic можно посмотреть список файлов пакета.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от wadic2

Вы пишите что там кода под разные архитектуры и платформы. Как мне понять что мне нужно

Система сборки автоматически определит архитектуру и выберет что нужно. Система сборки там Autotools, для сборки нужно вызвать ./configure, а потом make. Подробности написаны в текстовом файле «INSTALL».

X512 ★★★★★
()
Ответ на: комментарий от X512

Там нужен Makefile.am

Вот пример этого файла:

AM_CFLAGS = -std=c99 -Wall -Wextra -Werror

bin_PROGRAMS=compress decompress compress_SOURCES=compress.c decompress_SOURCES=decompress.c

Чего это все значит я хрен знает.

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

AM_CFLAGS - общие флаги компилятора С.

bin_PROGRAMS = foo bar - список программ (исполняемых файлов), которые нужно собрать для установки в каталог /prefix/bin (prefix задаётся перед сборкой)

foo_SOURCES = ... - список исходных файлов, из которых нужно собрать программу foo.

man autotools.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от X512

Хорошо. Допустим я разберусь с Makefile.am. А как мне найти среди этих файлов (glibc) нужные мне (архитектуру, у меня убунту 64)?

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

Ты удивишься, но glibc это не одна библиотека. И там много разных названий. В некоторых даже libc нет, такие дела.

Рекомендую написать письмо Деду Морозу, пусть подарит знания и смелость на новый год.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Напиши лешему, пусть подарит мозги. По теме. Мне нужно в самой glibc найти файлы, соответствующие моей архитектуре, у меня убунту 64. Конкретно, к примеру, мне нужна функция sys_open().

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

Если вы лезете в sys_open вы что-то делаете не так. Какую задачу вы решаете?

PPP328 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.