Clang

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 13 янв 2024, 03:18

Olej писал(а):
13 янв 2024, 03:14
Он ищёт в -L/usr/lib/llvm-14/bin/../lib ... но такого каталога нет:
Как мне помнится, для libc++ установку нужно делать дополнитеьно к Cobj...

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/NET.2$ aptitude search "libc\+\+"
p   libc++-11-dev                                                                                - LLVM C++ Standard library (development files)                                                          
p   libc++-11-dev:i386                                                                           - LLVM C++ Standard library (development files)                                                          
p   libc++-12-dev                                                                                - LLVM C++ Standard library (development files)                                                          
p   libc++-12-dev:i386                                                                           - LLVM C++ Standard library (development files)                                                          
p   libc++-13-dev                                                                                - LLVM C++ Standard library (development files)                                                          
p   libc++-13-dev:i386                                                                           - LLVM C++ Standard library (development files)                                                          
p   libc++-14-dev                                                                                - LLVM C++ Standard library (development files)                                                          
p   libc++-14-dev:i386                                                                           - LLVM C++ Standard library (development files)                                                          
p   libc++-15-dev                                                                                - LLVM C++ Standard library (development files)                                                          
p   libc++-15-dev:i386                                                                           - LLVM C++ Standard library (development files)                                                          
p   libc++-dev                                                                                   - LLVM C++ Standard library (development files)                                                          
p   libc++-dev:i386                                                                              - LLVM C++ Standard library (development files)                                                          
v   libc++-x.y                                                                                   -                                                                                                        
v   libc++-x.y:i386                                                                              -                                                                                                        
v   libc++-x.y-dev                                                                               -                                                                                                        
v   libc++-x.y-dev:i386                                                                          -                                                                                                        
i A libc++1                                                                                      - LLVM C++ Standard library                                                                              
p   libc++1:i386                                                                                 - LLVM C++ Standard library                                                                              
p   libc++1-11                                                                                   - LLVM C++ Standard library                                                                              
p   libc++1-11:i386                                                                              - LLVM C++ Standard library                                                                              
p   libc++1-12                                                                                   - LLVM C++ Standard library                                                                              
p   libc++1-12:i386                                                                              - LLVM C++ Standard library                                                                              
p   libc++1-13                                                                                   - LLVM C++ Standard library                                                                              
p   libc++1-13:i386                                                                              - LLVM C++ Standard library                                                                              
i   libc++1-14                                                                                   - LLVM C++ Standard library                                                                              
p   libc++1-14:i386                                                                              - LLVM C++ Standard library                                                                              
p   libc++1-15                                                                                   - LLVM C++ Standard library                                                                              
p   libc++1-15:i386                                                                              - LLVM C++ Standard library                                                                              
p   libc++abi-11-dev                                                                             - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-11-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-12-dev                                                                             - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-12-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-13-dev                                                                             - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-13-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-14-dev                                                                             - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-14-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-15-dev                                                                             - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-15-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-dev                                                                                - LLVM low level support for a standard C++ library (development files)                                  
p   libc++abi-dev:i386                                                                           - LLVM low level support for a standard C++ library (development files)                                  
v   libc++abi-x.y                                                                                -                                                                                                        
v   libc++abi-x.y:i386                                                                           -                                                                                                        
v   libc++abi-x.y-dev                                                                            -                                                                                                        
v   libc++abi-x.y-dev:i386                                                                       -                                                                                                        
p   libc++abi1                                                                                   - LLVM low level support for a standard C++ library                                                      
p   libc++abi1:i386                                                                              - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-11                                                                                - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-11:i386                                                                           - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-12                                                                                - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-12:i386                                                                           - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-13                                                                                - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-13:i386                                                                           - LLVM low level support for a standard C++ library                                                      
i   libc++abi1-14                                                                                - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-14:i386                                                                           - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-15                                                                                - LLVM low level support for a standard C++ library                                                      
p   libc++abi1-15:i386                                                                           - LLVM low level support for a standard C++ library                                                      
Установка:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ sudo apt install libc++-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  libdrm-dev libdw-dev libgbm-dev libgudev-1.0-dev liborc-0.4-dev liborc-0.4-dev-bin libpciaccess-dev libx11-xcb-dev
Для их удаления используйте «sudo apt autoremove».
Будут установлены следующие дополнительные пакеты:
  libc++-14-dev libunwind-14-dev
Следующие пакеты будут УДАЛЕНЫ:
  libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libunwind-dev
Следующие НОВЫЕ пакеты будут установлены:
  libc++-14-dev libc++-dev libunwind-14-dev
Обновлено 0 пакетов, установлено 3 новых пакетов, для удаления отмечено 3 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1.003 kB архивов.
После данной операции объём занятого дискового пространства уменьшится на 9.030 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.volia.net/ubuntu-archive jammy-updates/main amd64 libunwind-14-dev amd64 1:14.0.0-1ubuntu1.1 [39,0 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive jammy-updates/universe amd64 libc++-14-dev amd64 1:14.0.0-1ubuntu1.1 [961 kB]
Пол:3 http://ubuntu.volia.net/ubuntu-archive jammy/universe amd64 libc++-dev amd64 1:14.0-55~exp2 [3.184 B]
Получено 1.003 kB за 1с (1.607 kB/s)
(Чтение базы данных … на данный момент установлено 583863 файла и каталога.)
Удаляется libgstreamer-plugins-base1.0-dev:amd64 (1.20.1-1ubuntu0.1) …
Удаляется libgstreamer1.0-dev:amd64 (1.20.3-0ubuntu1) …
Удаляется libunwind-dev:amd64 (1.3.2-2build2.1) …
Выбор ранее не выбранного пакета libunwind-14-dev:amd64.
(Чтение базы данных … на данный момент установлено 583400 файлов и каталогов.)
Подготовка к распаковке …/libunwind-14-dev_1%3a14.0.0-1ubuntu1.1_amd64.deb …
Распаковывается libunwind-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Выбор ранее не выбранного пакета libc++-14-dev:amd64.
Подготовка к распаковке …/libc++-14-dev_1%3a14.0.0-1ubuntu1.1_amd64.deb …
Распаковывается libc++-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Выбор ранее не выбранного пакета libc++-dev:amd64.
Подготовка к распаковке …/libc++-dev_1%3a14.0-55~exp2_amd64.deb …
Распаковывается libc++-dev:amd64 (1:14.0-55~exp2) …
Настраивается пакет libunwind-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Настраивается пакет libc++-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Настраивается пакет libc++-dev:amd64 (1:14.0-55~exp2) …
Обрабатываются триггеры для man-db (2.10.2-1) …
Запуск компиляции:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ clang++ -O3 -stdlib=libc++ fibo_cc.cc -o fibo_cl
/usr/bin/ld: невозможно найти -lc++abi: Нет такого файла или каталога
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это уже гораздо лучше!
Но этого мало...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 13 янв 2024, 03:21

Olej писал(а):
13 янв 2024, 03:18
Но этого мало...

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/NET.2$ aptitude search "c\+\+abi"
v   c++abi2-dev                                                                                  -
v   c++abi2-dev:i386                                                                             -
p   libc++abi-11-dev                                                                             - LLVM low level support for a standard C++ library (development files)
p   libc++abi-11-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)
p   libc++abi-12-dev                                                                             - LLVM low level support for a standard C++ library (development files)
p   libc++abi-12-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)
p   libc++abi-13-dev                                                                             - LLVM low level support for a standard C++ library (development files)
p   libc++abi-13-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)
p   libc++abi-14-dev                                                                             - LLVM low level support for a standard C++ library (development files)
p   libc++abi-14-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)
p   libc++abi-15-dev                                                                             - LLVM low level support for a standard C++ library (development files)
p   libc++abi-15-dev:i386                                                                        - LLVM low level support for a standard C++ library (development files)
p   libc++abi-dev                                                                                - LLVM low level support for a standard C++ library (development files)
p   libc++abi-dev:i386                                                                           - LLVM low level support for a standard C++ library (development files)
v   libc++abi-x.y                                                                                -
v   libc++abi-x.y:i386                                                                           -
v   libc++abi-x.y-dev                                                                            -
v   libc++abi-x.y-dev:i386                                                                       -
p   libc++abi1                                                                                   - LLVM low level support for a standard C++ library
p   libc++abi1:i386                                                                              - LLVM low level support for a standard C++ library
p   libc++abi1-11                                                                                - LLVM low level support for a standard C++ library
p   libc++abi1-11:i386                                                                           - LLVM low level support for a standard C++ library
p   libc++abi1-12                                                                                - LLVM low level support for a standard C++ library
p   libc++abi1-12:i386                                                                           - LLVM low level support for a standard C++ library
p   libc++abi1-13                                                                                - LLVM low level support for a standard C++ library
p   libc++abi1-13:i386                                                                           - LLVM low level support for a standard C++ library
i   libc++abi1-14                                                                                - LLVM low level support for a standard C++ library
p   libc++abi1-14:i386                                                                           - LLVM low level support for a standard C++ library
p   libc++abi1-15                                                                                - LLVM low level support for a standard C++ library
p   libc++abi1-15:i386                                                                           - LLVM low level support for a standard C++ library
Установка:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ sudo apt install libc++abi-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Следующие пакеты устанавливались автоматически и больше не требуются:
  libdrm-dev libdw-dev libgbm-dev libgudev-1.0-dev liborc-0.4-dev liborc-0.4-dev-bin libpciaccess-dev libx11-xcb-dev
Для их удаления используйте «sudo apt autoremove».
Будут установлены следующие дополнительные пакеты:
  libc++abi-14-dev
Следующие НОВЫЕ пакеты будут установлены:
  libc++abi-14-dev libc++abi-dev
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 96,5 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 727 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.volia.net/ubuntu-archive jammy-updates/universe amd64 libc++abi-14-dev amd64 1:14.0.0-1ubuntu1.1 [93,2 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive jammy/universe amd64 libc++abi-dev amd64 1:14.0-55~exp2 [3.320 B]
Получено 96,5 kB за 0с (359 kB/s)         
Выбор ранее не выбранного пакета libc++abi-14-dev:amd64.
(Чтение базы данных … на данный момент установлено 584005 файлов и каталогов.)
Подготовка к распаковке …/libc++abi-14-dev_1%3a14.0.0-1ubuntu1.1_amd64.deb …
Распаковывается libc++abi-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Выбор ранее не выбранного пакета libc++abi-dev:amd64.
Подготовка к распаковке …/libc++abi-dev_1%3a14.0-55~exp2_amd64.deb …
Распаковывается libc++abi-dev:amd64 (1:14.0-55~exp2) …
Настраивается пакет libc++abi-14-dev:amd64 (1:14.0.0-1ubuntu1.1) …
Настраивается пакет libc++abi-dev:amd64 (1:14.0-55~exp2) …
Компиляция:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ clang++ -O3 -stdlib=libc++ fibo_cc.cc -o fibo_cl
Вот теперь оно:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ ls -l fibo_cl
-rwxrwxr-x 1 olej olej 16920 янв 13 02:08 fibo_cl
И библиотека та что надо:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ ldd fibo_cl
	linux-vdso.so.1 (0x00007ffcd869c000)
	libc++.so.1 => /lib/x86_64-linux-gnu/libc++.so.1 (0x00007f63fff61000)
	libunwind.so.1 => /lib/x86_64-linux-gnu/libunwind.so.1 (0x00007f63fff56000)
	libc++abi.so.1 => /lib/x86_64-linux-gnu/libc++abi.so.1 (0x00007f63fff20000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f63ffe39000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f63ffe19000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f63ffbf0000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6400084000)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 13 янв 2024, 03:24

Olej писал(а):
13 янв 2024, 03:21
Вот теперь оно:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ time ./fibo_cl 45
1836311903

real    0m5,276s
user    0m5,269s
sys     0m0,004s

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples/compare/fibo$ time ./fibo_cl 45
1836311903

real    0m4,644s
user    0m4,643s
sys     0m0,000s

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 15 янв 2024, 02:41

Olej писал(а):
13 янв 2024, 03:21
Вот теперь оно:
Теперь зафиксирую ... по состоянию на наачало 2024г. (для меня это важно!) - чтобы иметь Clang без проблем, на этом компьютере, или на новых, нужно иметь установленными (необходимо и достаточно):

Код: Выделить всё

olej@R420:~$ aptitude search search "libc\+\+" | grep ^i
i A libc++-14-dev - LLVM C++ Standard library (development files)
i  libc++-dev - LLVM C++ Standard library (development files)
i A libc++1 - LLVM C++ Standard library
i  libc++1-14 - LLVM C++ Standard library
i A libc++abi-14-dev - LLVM low level support for a standard C++ library (development files)
i  libc++abi-dev - LLVM low level support for a standard C++ library (development files)
i  libc++abi1-14 - LLVM low level support for a standard C++ library

Код: Выделить всё

olej@R420:~$ aptitude search clang | grep ^i
i  clang - C, C++ and Objective-C compiler (LLVM based), clang binary
i  clang-13 - C, C++ and Objective-C compiler
i  clang-14 - C, C++ and Objective-C compiler
i A clang-tidy - clang-based C++ linter tool
i  clang-tidy-14 - clang-based C++ linter tool
i  clang-tools-14 - clang-based tools for C/C++ developments
i  libclang-common-13-dev - Clang library - Common development package
i  libclang-common-14-dev - Clang library - Common development package
i A libclang-cpp11 - C++ interface to the Clang library
i  libclang-cpp13 - C++ interface to the Clang library
i  libclang-cpp14 - C++ interface to the Clang library
i A libclang1-11 - C interface to the Clang library
i  libclang1-13 - C interface to the Clang library
i  libclang1-14 - C interface to the Clang library

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ aptitude search llvm-14 | grep ^i
i  llvm-14 - модульная технология построения компиляторов
i  llvm-14-dev - Modular compiler and toolchain technologies, libraries and headers
i  llvm-14-linker-tools - Modular compiler and toolchain technologies - Plugins
i  llvm-14-runtime - Modular compiler and toolchain technologies, IR interpreter
i  llvm-14-tools - Modular compiler and toolchain technologies, tools
(Чтоб в другой раз не вспоминать то, что наверняка забудется :!: :oops: )
Важно, на этот раз, что все инсталляции здесь делаются без ручной сборки из исходников чего-либо - всё устанавливается из стандартного пакетного репозитория дистрибутива :!:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 15 янв 2024, 02:56

Olej писал(а):
15 янв 2024, 02:41
необходимо и достаточно

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 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.

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ clang++ --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
И для того, чтобы собрать Clang приложение C++ (какое неважно) с подключением стандартной Linux библиотеки C++ libstdc++.so, используем команду:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ clang++ -O3 -I/usr/include/c++/11/ -I/usr/include/x86_64-linux-gnu/c++/11 -L /usr/lib/gcc/x86_64-linux-gnu/11 fibo_cc.cc -o fibo_cl
В итоге:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ ls -l fibo_cl
-rwxrwxr-x 1 olej olej 16776 янв 15 01:45 fibo_cl
И расшаренные библиотеки для этого приложения:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ ldd fibo_cl
	linux-vdso.so.1 (0x00007ffc8ebb0000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5fc1f2c000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5fc1e45000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5fc1e25000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5fc1bfc000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5fc2185000)
А вот для того, чтобы собрать Clang приложение C++ (тот же исходный код!) с подключением родной Clang/LLVM библиотеки C++ libc++.so, используем доугой вид команды:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ clang++ -O3 -stdlib=libc++ fibo_cc.cc -o fibo_cv
В итоге:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ ls -l fibo_cv
-rwxrwxr-x 1 olej olej 16920 янв 15 01:47 fibo_cv

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ ldd fibo_cv
	linux-vdso.so.1 (0x00007fff86d73000)
	libc++.so.1 => /lib/x86_64-linux-gnu/libc++.so.1 (0x00007f3635a81000)
	libunwind.so.1 => /lib/x86_64-linux-gnu/libunwind.so.1 (0x00007f3635a76000)
	libc++abi.so.1 => /lib/x86_64-linux-gnu/libc++abi.so.1 (0x00007f3635a40000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3635959000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3635939000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3635710000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f3635ba3000)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 15 янв 2024, 03:07

Olej писал(а):
15 янв 2024, 02:56
с подключением стандартной Linux библиотеки C++ libstdc++.so

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ time ./fibo_cl 47
4807526976

real	0m12,599s
user	0m12,592s
sys	0m0,004s
Olej писал(а):
15 янв 2024, 02:56
с подключением родной Clang/LLVM библиотеки C++ libc++.so

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.2/examples.work/compare/fibo$ time ./fibo_cv 47
4807526976

real	0m12,864s
user	0m12,860s
sys	0m0,000s

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 11 фев 2024, 22:14

Olej писал(а):
13 янв 2024, 03:18
Это уже гораздо лучше!
Проблемы с библиотекой libc++ снова вылезла при сборке Go: TinyGo
Olej писал(а):
11 фев 2024, 19:43
/usr/bin/ld: невозможно найти -lstdc++: Нет такого файла или каталога

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 11 фев 2024, 22:17

Olej писал(а):
11 фев 2024, 22:14
Проблемы с библиотекой libc++ снова вылезла
Смотрю библиотеки:

Код: Выделить всё

olej@R420:~/2024/Go/tinygo$ ls -o /lib/x86_64-linux-gnu/libc++*
lrwxrwxrwx 1 root 23 июл 14  2023 /lib/x86_64-linux-gnu/libc++.a -> ../llvm-14/lib/libc++.a
lrwxrwxrwx 1 root 27 июл 14  2023 /lib/x86_64-linux-gnu/libc++abi.so -> ../llvm-14/lib/libc++abi.so
lrwxrwxrwx 1 root 16 июл 14  2023 /lib/x86_64-linux-gnu/libc++abi.so.1 -> libc++abi.so.1.0
lrwxrwxrwx 1 root 31 июл 14  2023 /lib/x86_64-linux-gnu/libc++abi.so.1.0 -> ../llvm-14/lib/libc++abi.so.1.0
lrwxrwxrwx 1 root 24 июл 14  2023 /lib/x86_64-linux-gnu/libc++.so -> ../llvm-14/lib/libc++.so
lrwxrwxrwx 1 root 13 июл 14  2023 /lib/x86_64-linux-gnu/libc++.so.1 -> libc++.so.1.0
lrwxrwxrwx 1 root 28 июл 14  2023 /lib/x86_64-linux-gnu/libc++.so.1.0 -> ../llvm-14/lib/libc++.so.1.0
Похоже что всё есть как надо...
А здесь:

Код: Выделить всё

olej@R420:~/2024/Go/tinygo$ ldconfig -p | grep libc\+\+
    libc++abi.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc++abi.so.1
    libc++abi.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libc++abi.so
    libc++.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libc++.so.1
А здесь каким-то образом вместо 4-х - 3 записи.
Ещё один способ проверить что там есть в кэше /etc/ld.so.cache (хотя это и не текстовый файл!):

Код: Выделить всё

root@R420:/etc# strings '/etc/ld.so.cache' | grep libc++
/lib/x86_64-linux-gnu/libc++abi.so
/lib/x86_64-linux-gnu/libc++abi.so.1
/lib/x86_64-linux-gnu/libc++.so.1
Могу грешить (а что остаётся?) на то, что в кэше ldconfig как-раз нет записи для libc++.so ... хотя даже в /lib/x86_64-linux-gnu/ такая ссылка есть.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 12 фев 2024, 00:00

Вот этого для LLVM-14 я не могу понять :-o :

Код: Выделить всё

olej@R420:/lib/llvm-14/lib$ pwd
/lib/llvm-14/lib

Код: Выделить всё

olej@R420:/lib/llvm-14/lib$ ls -l libc++*.so
lrwxrwxrwx 1 root root 14 июл 14  2023 libc++abi.so -> libc++abi.so.1
-rw-r--r-- 1 root root 37 июл 14  2023 libc++.so

Код: Выделить всё

olej@R420:/lib/llvm-14/lib$ ls -lL libc++*.so
-rw-r--r-- 1 root root 215736 июл 14  2023 libc++abi.so
-rw-r--r-- 1 root root     37 июл 14  2023 libc++.so
Что вот это значит? Первый раз такое вижу :-o

Код: Выделить всё

olej@R420:/lib/llvm-14/lib$ cat libc++.so
INPUT(libc++.so.1 -lunwind -lc++abi)

Код: Выделить всё

olej@R420:/lib/llvm-14/lib$ ls -lL libc++*.so*
-rw-r--r-- 1 root root 215736 июл 14  2023 libc++abi.so
-rw-r--r-- 1 root root 215736 июл 14  2023 libc++abi.so.1
-rw-r--r-- 1 root root 215736 июл 14  2023 libc++abi.so.1.0
-rw-r--r-- 1 root root     37 июл 14  2023 libc++.so
-rw-r--r-- 1 root root 970688 июл 14  2023 libc++.so.1
-rw-r--r-- 1 root root 970688 июл 14  2023 libc++.so.1.0

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Clang

Непрочитанное сообщение Olej » 12 фев 2024, 01:43

Olej писал(а):
12 фев 2024, 00:00
Что вот это значит? Первый раз такое вижу
Даже усомнился в работоспособности своей инсталляции Clang C++
Проверяем:
Olej писал(а):
15 янв 2024, 02:56
А вот для того, чтобы собрать Clang приложение C++ (тот же исходный код!) с подключением родной Clang/LLVM библиотеки C++ libc++.so, используем доугой вид команды:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ pwd
/home/olej/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ clang++ -O3 -stdlib=libc++ fibo_cc.cc -o fibo_cv

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ ls -l fibo_cv
-rwxrwxr-x 1 olej olej 16920 фев 12 00:33 fibo_cv
Нет! Всё в порядке.

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ time ./fibo_cv 45
1836311903
real	0m5,256s
user	0m5,249s
sys	0m0,005s

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ ldd fibo_cv
	linux-vdso.so.1 (0x00007ffe3148c000)
	libc++.so.1 => /lib/x86_64-linux-gnu/libc++.so.1 (0x00007f4aaf721000)
	libunwind.so.1 => /lib/x86_64-linux-gnu/libunwind.so.1 (0x00007f4aaf716000)
	libc++abi.so.1 => /lib/x86_64-linux-gnu/libc++abi.so.1 (0x00007f4aaf6e0000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4aaf5f9000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4aaf5d9000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4aaf3b0000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f4aaf843000)
Все библиотеки как библиотеки:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ ls -lL /lib/x86_64-linux-gnu/libc++.so.1
-rw-r--r-- 1 root root 970688 июл 14  2023 /lib/x86_64-linux-gnu/libc++.so.1

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ ls -lL /lib/x86_64-linux-gnu/libunwind.so.1
-rw-r--r-- 1 root root 38456 июл 14  2023 /lib/x86_64-linux-gnu/libunwind.so.1

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/compare/fibo$ ls -lL /lib/x86_64-linux-gnu/libc++abi.so.1
-rw-r--r-- 1 root root 215736 июл 14  2023 /lib/x86_64-linux-gnu/libc++abi.so.1

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя