Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Где расположен файл Си библиотеки <cstring>  (Прочитано 1369 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Здравствуйте!

Мне хотелось бы посмотреть, как реализованы некоторые функции C++ STL <cstring>. Как найти файл этой библиотеки у себя на ПК?

Пробовал locate cstring.h
но какая-то ерунда:

Код: (html5) [Выделить]
/usr/include/boost/test/utils/is_cstring.hpp
/usr/include/boost/test/utils/basic_cstring/basic_cstring.hpp
« Последнее редактирование: 02 Ноября 2020, 15:23:28 от ovadia »

Оффлайн es1840

  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #1 : 02 Ноября 2020, 15:27:59 »
$ apt-file -x search '.*/cstring.h$'

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #2 : 02 Ноября 2020, 15:29:53 »
ovadia, у тя сырцы не установлены

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #3 : 02 Ноября 2020, 15:38:26 »
А как тогда у меня g++ и Visual Studio Code видят эту библиотеку, компилируют и запускают программы с этой библиотекой?

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #4 : 02 Ноября 2020, 15:43:02 »
ovadia, а если так:

locate cstring
/snap/midori/451/usr/lib/python2.7/dist-packages/gi/docstring.py
/snap/midori/550/usr/lib/python2.7/dist-packages/gi/docstring.py
/usr/include/c++/7/cstring
/usr/include/c++/9/cstring
/usr/lib/python3/dist-packages/astropy/wcs/docstrings.py
/usr/lib/python3/dist-packages/astropy/wcs/__pycache__/docstrings.cpython-38.pyc
/usr/lib/python3/dist-packages/gi/docstring.py
/usr/lib/python3/dist-packages/gi/__pycache__/docstring.cpython-38.pyc
/usr/lib/python3/dist-packages/scipy/ndimage/_ni_docstrings.py
/usr/lib/python3/dist-packages/scipy/ndimage/__pycache__/_ni_docstrings.cpython-38.pyc


Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #5 : 02 Ноября 2020, 16:01:46 »
Спасибо! Нашелся файл ctring.h в /usr/include/c++/9/.

В самом файле увидел такую вещь, которая мне нужна:
Код: (html5) [Выделить]
strstr(char* __s1, const char* __s2)
  { return __builtin_strstr(__s1, __s2); }

Получается, что идет обращение к gcc функции __builtin_strstr(). А где она реализована?

Посмотрел locate gcc, но там что-то всего много.

Разочаровался. Я хотел посмотреть как в Си коде реализована функция strstr.
« Последнее редактирование: 02 Ноября 2020, 16:17:28 от ovadia »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5422
  • Все по палатам!
    • Просмотр профиля
Извините, я все еще учусь

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #7 : 02 Ноября 2020, 16:26:22 »
Спасибо! Типа этого, но не совсем то. Это модифицированная функция. А хотелось бы посмотреть как она реализована в чистом виде в gcc.

Пользователь добавил сообщение 02 Ноября 2020, 16:48:20:
Нашел :)
То, что надо -- https://github.com/gcc-mirror/gcc/blob/master/libiberty/strstr.c
« Последнее редактирование: 02 Ноября 2020, 16:49:25 от ovadia »

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #8 : 02 Ноября 2020, 16:59:56 »
ovadia, дык, в сисеме же все есть,
зачем еще куда-то лазить

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #9 : 02 Ноября 2020, 17:04:54 »
Я так и не понял, как это найти в самой системе?

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #10 : 02 Ноября 2020, 17:07:06 »
ovadia,  тупо:

sudo find / -name string.h

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #11 : 02 Ноября 2020, 17:18:46 »
Код: [Выделить]
sudo find / -name string.h

Как же в этой куче найти то, что нужно?
Например, файл /usr/include/string.h не равен файлу /usr/include/linux/string.h
Содержимое файлов string.h отличается.

Вот:
Код: (html5) [Выделить]
/snap/gnome-3-34-1804/36/usr/include/linux/string.h
/snap/gnome-3-34-1804/36/usr/include/string.h
/snap/gimp/292/usr/include/linux/string.h
/snap/gimp/292/usr/include/string.h
/snap/gimp/297/usr/include/linux/string.h
/snap/gimp/297/usr/include/string.h
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/include/string.h
/usr/include/linux/string.h
/usr/src/linux-headers-5.4.0-51-generic/include/config/ucs2/string.h
/usr/src/linux-headers-5.4.0-51-generic/include/config/netfilter/xt/match/string.h
/usr/src/linux-headers-5.4.0-51/include/asm-generic/string.h
/usr/src/linux-headers-5.4.0-51/include/uapi/linux/string.h
/usr/src/linux-headers-5.4.0-51/include/linux/string.h
/usr/src/linux-headers-5.4.0-51/arch/x86/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/arc/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/nds32/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/h8300/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/csky/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/arm64/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/m68k/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/riscv/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/c6x/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/hexagon/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/parisc/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/mips/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/sh/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/alpha/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/microblaze/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/s390/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/powerpc/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/sparc/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/openrisc/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/ia64/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/arm/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/unicore32/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/nios2/include/asm/string.h
/usr/src/linux-headers-5.4.0-51/arch/xtensa/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/include/asm-generic/string.h
/usr/src/linux-headers-5.4.0-52/include/uapi/linux/string.h
/usr/src/linux-headers-5.4.0-52/include/linux/string.h
/usr/src/linux-headers-5.4.0-52/arch/x86/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/arc/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/nds32/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/h8300/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/csky/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/arm64/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/m68k/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/riscv/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/c6x/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/hexagon/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/parisc/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/mips/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/sh/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/alpha/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/microblaze/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/s390/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/powerpc/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/sparc/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/openrisc/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/ia64/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/arm/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/unicore32/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/nios2/include/asm/string.h
/usr/src/linux-headers-5.4.0-52/arch/xtensa/include/asm/string.h
/usr/src/linux-headers-5.4.0-52-generic/include/config/ucs2/string.h
/usr/src/linux-headers-5.4.0-52-generic/include/config/netfilter/xt/match/string.h
« Последнее редактирование: 02 Ноября 2020, 17:28:21 от ovadia »

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #12 : 02 Ноября 2020, 17:38:57 »
ovadia, кто ж тя знает, чего ты хочешь

Оффлайн ovadia

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #13 : 02 Ноября 2020, 18:31:03 »
чего ты хочешь
Хотелось бы найти реализацию в коде функции стандартной библиотеки. Например, strstr или strlen.

Оффлайн KJOI

  • Активист
  • *
  • Сообщений: 287
  • ALT Linux
    • Просмотр профиля
Re: Где расположен файл Си библиотеки <cstring>
« Ответ #14 : 02 Ноября 2020, 19:58:06 »
Хотелось бы найти реализацию в коде функции стандартной библиотеки. Например, strstr или strlen.
С чего вы взяли что функция будет не в компилированном виде? Это не питон.
Качайте исходники и там ищите.
Русский Линукс: https://www.basealt.ru/products/simplylinux/
Мой проект git «Kernel Manager» linux: https://github.com/Koi-foo/kernel-manager/

 

Страница сгенерирована за 0.038 секунд. Запросов: 26.