На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
> gcc - установка и настройка
    С MSYS2, по мере установки, возникают проблемы:
    Цитата
    error: failed retrieving file 'python-3.11.7-1-x86_64.pkg.tar.zst' from mirror.msys2.org : Failed to connect to fastmirror.pp.ua port 443 after 10011 ms: Timeout was reached
    error: failed retrieving file 'cppdap-1.58.0a-3-x86_64.pkg.tar.zst' from mirror.msys2.org : Connection timeout after 10000 ms
    error: failed retrieving file 'libarchive-3.7.2-1-x86_64.pkg.tar.zst' from mirror.msys2.org : Connection timeout after 10000 ms
    warning: too many errors from mirror.msys2.org, skipping for the remainder of this transaction
    error: failed retrieving file 'librhash-1.4.3-1-x86_64.pkg.tar.zst' from mirror.msys2.org : Connection timeout after 10000 ms

    Ни один пакет не установился без подобных ошибок, начиная с самой первой команды: pacman -Suy
    Как быть? Я в целом знаю как через VPN гулять по всяким ChatGPT, но вот обманывать установщики, которые напрямую лезут в инет - нас не учили :(

    Добавлено
    Цитата macomics @
    Затем, что по заданию она должна компилироваться на linux. И вот тут косяк, если из-за как-то не учтенной особенности linux, не выученной своевременно, программа просто не сможет откомпилироваться.

    Мне не настолько нужна эта практика, чтобы ради неё делать слишком серьезные телодвижения :) Мой ноут у меня детишки изъяли, а мне взамен подарили это чудо, на 1,1 ГГц :) Для работы хватает, а вот что серьёзнее - уже нет. Поэтому и собираю комп, 8-ми ядерник, с 32 Гб памяти. У нас ближе к весне в программе обучения будет линукс, в частности его установка на виртуалку. Вот тогда и познакомлюсь с ним поближе, тем более как раз комп будет готов.
    Пока же попробую в винде. Не получится - да и фиг с ней, к лету еще конторы найдутся для практики.
      Цитата Eretic @
      Ни один пакет не установился без подобных ошибок, начиная с самой первой команды: pacman -Suy
      Как быть? Я в целом знаю как через VPN гулять по всяким ChatGPT, но вот обманывать установщики, которые напрямую лезут в инет - нас не учили

      Явно с инетом большие проблемы :-? Я еженедельно обновляю свой MSYS2. Он вытягивает по 300-700Mb без единой ошибки. Что посоветовать в таком случае - затрудняюсь. Может другой канал в Инет поискать, провайдера сменить ... Не знаю.

      Добавлено
      Цитата macomics @
      Вот элементарный пример. Для взаимодействия предложили использовать socket. Но на Windows для работы с socket надо использовать WSAStartup и WSACleanup, которых нету в linux. Т.е. с виду работоспособный код для Windows под linux просто выдаст ошибку отсутствия функций.

      Лучше проблемы решать по мере их появления. Этого в задании пока не было. Зачем заранее тратить время на то, чего не просили. Вопрос риторический.
        Цитата Majestio @
        Явно с инетом большие проблемы

        Мне кажется дело в другом:
        Failed to connect to fastmirror.pp.ua port 443
          Тогда попробуйте способ с виртуальной машиной. Не знаю как долго вы будете скачивать 3-5 Гб образ linux, но обычно он успешно устанавливается за 20 минут на виртуальную машину. Будет у вас на Windows окошко с монитором виртуальной машины и там будете работать (при желании сможете сделать его на весь экран). Приложения на том же Ubuntu ставятся через магазин приложений - бесплатно. Там и найдете VS Code.
            Цитата Eretic @
            Ни один пакет не установился без подобных ошибок, начиная с самой первой команды: pacman -Suy
            Как быть? Я в целом знаю как через VPN гулять по всяким ChatGPT, но вот обманывать установщики, которые напрямую лезут в инет - нас не учили

            Вдогонку. MSYS2 использует пакетный менеджер от ArchLinux. Глянь эту статью. Можно попробовать поиграться с зеркалами. И да ... все варианты редактирования а-ля /etc/pacman.d/mirrorlist можно редактировать средствами винды (не обязательно из терминала MSYS2). Нужно только соблюдать правильные юниксовые переводы строк.

            Добавлено
            Цитата Eretic @
            Мне кажется дело в другом:
            Failed to connect to fastmirror.pp.ua port 443

            В таких случаях должны перебираться резервные хранилища :-?

            Добавлено
            Если совсем не получается - поставь PlanetVPN на время установки. Он бесплатный без выбора сервера (что дадут). Потом удалишь или выключишь за ненадобностью. И да, самой первой командой в терминале MSYS2 сделай полное обновление:
            ExpandedWrap disabled
              pacman -Syyuu
              С VPN поначалу тоже ошибки пошли:
              ExpandedWrap disabled
                pacman -Syyuu
                :: Synchronizing package databases...
                 clangarm64                      429.2 KiB   391 KiB/s 00:01 [###############################] 100%
                 mingw32                         312.8 KiB   314 KiB/s 00:01 [###############################] 100%
                 mingw64                         476.9 KiB   431 KiB/s 00:01 [###############################] 100%
                 ucrt64                          485.4 KiB   459 KiB/s 00:01 [###############################] 100%
                 clang32                         306.2 KiB   295 KiB/s 00:01 [###############################] 100%
                 clang64                         476.5 KiB  1876 KiB/s 00:00 [###############################] 100%
                 msys                            484.4 KiB  1357 KiB/s 00:00 [###############################] 100%
                error: failed retrieving file 'clangarm64.db' from mirror.msys2.org : Resolving timed out after 10005 milliseconds
                error: failed retrieving file 'mingw32.db' from mirror.msys2.org : Connection time-out
                error: failed retrieving file 'mingw64.db' from mirror.msys2.org : Connection time-out
                warning: too many errors from mirror.msys2.org, skipping for the remainder of this transaction
                error: failed retrieving file 'ucrt64.db' from mirror.msys2.org : Connection time-out
                error: failed retrieving file 'clang32.db' from mirror.msys2.org : Connection time-out
                :: Starting core system upgrade...
                 there is nothing to do
                :: Starting full system upgrade...
                 there is nothing to do

              Правда уже без UA. И через минуту наконец-то заработало :)
              В процессе только одна ошибка и всплыла:
              ExpandedWrap disabled
                $ pacman -S --noconfirm mingw-w64-i686-qt5 mingw-w64-i686-qt5-static mingw-w64-i686-qt5-doc
                error: target not found: mingw-w64-i686-qt5
                error: target not found: mingw-w64-i686-qt5-doc

              Надеюсь не критично.
              Ну всё, завтра настрою и опробую.
                Цитата Eretic @
                Надеюсь не критично.
                Ну всё, завтра настрою и опробую.

                Гуд! Последнюю команду можно (и нужно) запускать хотя бы раз в неделю. Просто чтобы поддерживать MSYS2 в актуальном состоянии. В моем случае это выглядит вот так:
                Прикреплённая картинка
                Прикреплённая картинка
                  Цитата Eretic @
                  А тут сразу gcc, да еще под линукс, который я и в глаза не видел.

                  Можно поставить эмулятор и в нём работать.
                  я использую VirtualBox + Fedora - отлично работает.
                  Для "Убинты" пришлось gcc отдельно устанавливать, а в Федору
                  сразу всё было встроено.

                  Добавлено
                  Цитата Eretic @
                  1) потоки в C++ создаются через std::thread?
                  2) Потоком можно сделать класс? Точнее экземпляр класса? Есть какие то тонкости?
                  3) какие стандартные средства есть для синхронизации доступа к данным между потоками? Просто я в винде всю жизнь использовал мьютексы и семафоры, а вот что есть в ++ даже не представляю.

                  1) в Линуксе я использовал "pthread_create" и другие функции
                  из <pthread.h>
                  2) Да. Только так и работаю. Сделал базовый класс-поток, в котором
                  виртуальная потоковая процедура - член класса. В библиотеку его,
                  поскольку он полезен. Класс-поток конкретного проекта является наследником
                  базового класса.
                  3) Любые средства, какие есть в Линуксе. Те же семафоры.
                  Тут лучше книги почитать. Лично я привык пользоваться критическими
                  секциями, а в Линуксе я их не нашёл. Поэтому сделал класс "критическая секция"
                  из семафора.

                  Добавлено
                  Цитата Eretic @
                  4) основная проблема: как передать данные из одной программы в другую, чтобы работало и на винде и на линуксе?

                  Если необходимо такое, тогда можно попытаться
                  освоить кросс-платформенную библиотеку.
                  Вообще многое можно использовать. Файлы, сокеты итд.
                  Книги надо читать.
                  Сообщение отредактировано: ЫукпШ -
                    Цитата Eretic @
                    как передать данные из одной программы в другую,
                    Я бы начал с проблемы "как из всех запущенных копий другой программы выбрать нужную, в которую хотим прередать".
                      Спасибо ребята.
                      Но пока, будете смеяться, никак не запущу поток. Выскакивает ошибка:
                      ExpandedWrap disabled
                        D:\Dev\Projects\CPP\Work\main.cpp:20:10: error: 'thread' is not a member of 'std'
                           20 |     std::thread th(input_thread);

                      #include <thread>
                      подключилось без проблем. И какого дьявола gcc нужно?
                        А как вы собираете: через gcc или g++?
                          Разница только в том, что gcc выдаёт на одну ошибку больше:
                          ExpandedWrap disabled
                            D:\Dev\Projects\CPP\Work\main.cpp:20:10: error: 'thread' is not a member of 'std'
                               20 |     std::thread th(input_thread);
                                  |          ^~~~~~
                            D:\Dev\Projects\CPP\Work\main.cpp:4:1: note: 'std::thread' is defined in header '<thread>'; did you forget to '#include <thread>'?
                                3 | #include <vector>
                              +++ |+#include <thread>
                                4 | #include <string>

                          #include <thread> разумеется присутствует.
                          Похоже сборка криво встала, уже в который раз.
                          Буду делать на каком-нибудь C++ под винду. И надеюсь скомпилируется у них на gcc. А нет, так и чёрт с ними, итак целый день убил на бесконечную переустановку gcc :)
                            Eretic, сделал тебе пример. Попробуй у себя ...

                            Создай подкаталог для проекта, например: ~/dev/projects/test-threads
                            Создай в нем три файла:

                            test-threads.cpp

                            ExpandedWrap disabled
                              #include <iostream>
                              #include <thread>
                              #include <chrono>
                               
                              void printWithDelay(int id, double delay) {
                                for (int i = 0; i < 5; ++i) {
                                  std::this_thread::sleep_for(std::chrono::milliseconds(static_cast<int>(delay * 1000)));
                                  std::cout << "Thread [" << id << "] wrote: " << i << std::endl;
                                }
                              }
                               
                              int main() {
                                std::thread t1(printWithDelay, 1, 0.5);
                                std::thread t2(printWithDelay, 2, 0.6);
                                std::thread t3(printWithDelay, 3, 0.7);
                               
                                t1.join();
                                t2.join();
                                t3.join();
                               
                                return 0;
                              }

                            CMakeLists.txt

                            ExpandedWrap disabled
                              cmake_minimum_required(VERSION 3.0)
                              project(TestThreads)
                               
                              set(CMAKE_CXX_STANDARD 11)
                              set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
                               
                              add_executable(test-threads test-threads.cpp)

                            build.sh

                            ExpandedWrap disabled
                              #!/usr/bin/sh
                               
                              export PATH=/clang64/bin:$PATH
                               
                              mkdir build
                              cd build
                              cmake -G Ninja ..
                              ninja

                            Запусти сборку:

                            ExpandedWrap disabled
                              sh build.sh

                            Если все пройдет нормально, то в каталоге проекта появится подкаталог build, а в нем исполняемый файл. Если ninja не найден - установи его.

                            Посмотреть варианты и что установлено:

                            ExpandedWrap disabled
                              pacman -Ss ninja

                            Установить, например, clang64/mingw-w64-clang-x86_64-ninja:

                            ExpandedWrap disabled
                              pacman -S clang64/mingw-w64-clang-x86_64-ninja

                            И да, все манипуляции производятся в терминальном окне MSYS2. И не забывай - в Linux и вообще в *nix названия файлов и каталогов - регистрозависимые.
                              Цитата Eretic @
                              Похоже сборка криво встала, уже в который раз.
                              Буду делать на каком-нибудь C++ под винду.

                              Попробуй тут почитать - вдруг поможет.
                              Или здесь
                                ExpandedWrap disabled
                                  build.sh: line 7: cmake: command not found

                                Сейчас переустановлю переустановлю...

                                Добавлено
                                ExpandedWrap disabled
                                  $ sh build.sh
                                  mkdir: cannot create directory ‘build’: File exists
                                  CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
                                    Compatibility with CMake < 3.5 will be removed from a future version of
                                    CMake.
                                   
                                    Update the VERSION argument <min> value or use a ...<max> suffix to tell
                                    CMake that the project does not need compatibility with older versions.
                                   
                                   
                                  -- The C compiler identification is unknown
                                  -- The CXX compiler identification is unknown
                                  CMake Error at CMakeLists.txt:2 (project):
                                    No CMAKE_C_COMPILER could be found.
                                   
                                    Tell CMake where to find the compiler by setting either the environment
                                    variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
                                    the compiler, or to the compiler name if it is in the PATH.
                                   
                                   
                                  CMake Error at CMakeLists.txt:2 (project):
                                    No CMAKE_CXX_COMPILER could be found.
                                   
                                    Tell CMake where to find the compiler by setting either the environment
                                    variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
                                    to the compiler, or to the compiler name if it is in the PATH.
                                   
                                   
                                  -- Configuring incomplete, errors occurred!
                                  ninja: error: loading 'build.ninja': ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.


                                ExpandedWrap disabled
                                  Andrey@DESKTOP-8J6CIOK MSYS /D/Dev/Projects/CPP/Work
                                  $ pacman -Ss ninja
                                  clangarm64/mingw-w64-clang-aarch64-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  clangarm64/mingw-w64-clang-aarch64-gn 0.2131.85944ebc-1
                                      Meta-build system that generates build files for Ninja (mingw-w64)
                                  clangarm64/mingw-w64-clang-aarch64-ninja 1.11.1-3
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  mingw32/mingw-w64-i686-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  mingw32/mingw-w64-i686-ninja 1.11.1-3
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  mingw64/mingw-w64-x86_64-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  mingw64/mingw-w64-x86_64-gn 0.2131.85944ebc-1
                                      Meta-build system that generates build files for Ninja (mingw-w64)
                                  mingw64/mingw-w64-x86_64-ninja 1.11.1-3
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  ucrt64/mingw-w64-ucrt-x86_64-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  ucrt64/mingw-w64-ucrt-x86_64-gn 0.2131.85944ebc-1
                                      Meta-build system that generates build files for Ninja (mingw-w64)
                                  ucrt64/mingw-w64-ucrt-x86_64-ninja 1.11.1-3
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  clang32/mingw-w64-clang-i686-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  clang32/mingw-w64-clang-i686-ninja 1.11.1-3
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  clang64/mingw-w64-clang-x86_64-cninja 3.7.9-1
                                      cninja, an opinionated cmake config manager
                                  clang64/mingw-w64-clang-x86_64-gn 0.2131.85944ebc-1
                                      Meta-build system that generates build files for Ninja (mingw-w64)
                                  clang64/mingw-w64-clang-x86_64-ninja 1.11.1-3 [installed]
                                      Ninja is a small build system with a focus on speed (mingw-w64)
                                  msys/ninja 1.11.1-1
                                      Ninja is a small build system with a focus on speed
                                  msys/ninja-emacs 1.11.1-1
                                      Ninja is a small build system with a focus on speed (Emacs mode)
                                  msys/ninja-vim 1.11.1-1
                                      Ninja is a small build system with a focus on speed (vim mode)

                                Это уже MSYS2 с оф. сайта установлена.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 [2] 3 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0542 ]   [ 20 queries used ]   [ Generated: 27.04.24, 12:34 GMT ]