LINUX.ORG.RU

Реально ли использовать Anbox без systemd?

 , , ,


0

1

Хотел я значит установить Anbox, но т.к у меня дистр без системг, то при сборке пакета paru жаловался на недостоющую зависимость lib-systemd. Нашёл анбокс без системг, но он отказывается компилироватся. Вот ошибка компиляции:

/home/khomyak/artix_pkg/anbox-nosystemd-git/src/anbox/external/process-cpp-minimal/include/core/posix/linux/proc/process/oom_adj.h:28:11: ошибка: expected identifier before numeric constant
   28 | namespace linux
      |           ^~~~~
/home/khomyak/artix_pkg/anbox-nosystemd-git/src/anbox/external/process-cpp-minimal/include/core/posix/linux/proc/process/oom_adj.h:28:11: ошибка: expected unqualified-id before numeric constant
/home/khomyak/artix_pkg/anbox-nosystemd-git/src/anbox/external/process-cpp-minimal/src/core/posix/linux/proc/process/oom_adj.cpp:33:11: ошибка: expected identifier before numeric constant
   33 | namespace linux
      |           ^~~~~
/home/khomyak/artix_pkg/anbox-nosystemd-git/src/anbox/external/process-cpp-minimal/src/core/posix/linux/proc/process/oom_adj.cpp:33:11: ошибка: expected unqualified-id before numeric constant
make[2]: *** [external/process-cpp-minimal/src/CMakeFiles/process-cpp.dir/build.make:230: external/process-cpp-minimal/src/CMakeFiles/process-cpp.dir/core/posix/linux/proc/process/oom_adj.cpp.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:1164: external/process-cpp-minimal/src/CMakeFiles/process-cpp.dir/all] Ошибка 2
make: *** [Makefile:146: all] Ошибка 2
make: выход из каталога «/home/khomyak/artix_pkg/anbox-nosystemd-git/src/build»

Все зависимости установлены, CPU имеет необходимые инструкции. Предпологаю, что дело в разных версиях c++. У разраба она одна была, а у меня другая. Также мне пришлось немного изменить PKGBUILD, добавив -DCMAKE_CXX_STANDARD=14. Вывод терминала без этого флага:

In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:64,
                 from /home/khomyak/artix_pkg/anbox-nosystemd-git/src/anbox/external/android-emugl/shared/emugl/common/mutex_unittest.cpp:19:
/usr/include/gtest/internal/gtest-port.h:270:2: ошибка: #error C++ versions less than C++14 are not supported.
  270 | #error C++ versions less than C++14 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-printers.h:115,
                 from /usr/include/gtest/gtest-matchers.h:48,
                 from /usr/include/gtest/internal/gtest-death-test-internal.h:47,
                 from /usr/include/gtest/gtest-death-test.h:43,
                 from /usr/include/gtest/gtest.h:65:
/usr/include/gtest/internal/gtest-internal.h:636:58: ошибка: неправильное число аргументов шаблона (0, а должно быть 1)
  636 |   typedef ::std::map<std::string, CodeLocation, std::less<>> RegisteredTestsMap;
      |                                                          ^
In file included from /usr/include/c++/12.2.1/string:48,
                 from /usr/include/c++/12.2.1/bits/locale_classes.h:40,
                 from /usr/include/c++/12.2.1/bits/ios_base.h:41,
                 from /usr/include/c++/12.2.1/iomanip:40,
                 from /usr/include/gtest/gtest.h:54:
/usr/include/c++/12.2.1/bits/stl_function.h:403:12: замечание: предоставлено для «template<class _Tp> struct std::less»
  403 |     struct less : public binary_function<_Tp, _Tp, bool>
      |            ^~~~
/usr/include/gtest/internal/gtest-internal.h:636:59: ошибка: некорректный аргумент шаблона 3
  636 |   typedef ::std::map<std::string, CodeLocation, std::less<>> RegisteredTestsMap;
      |                                                           ^~
/usr/include/gtest/internal/gtest-internal.h: В функции-члене «bool testing::internal::TypedTestSuitePState::AddTestName(const char*, int, const char*, const char*)»:
/usr/include/gtest/internal/gtest-internal.h:613:23: ошибка: запрос элемента «insert» в «((testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_», имеющего не классовый тип «testing::internal::TypedTestSuitePState::RegisteredTestsMap» {aka «int»}
  613 |     registered_tests_.insert(
      |                       ^~~~~~
/usr/include/gtest/internal/gtest-internal.h: В функции-члене «bool testing::internal::TypedTestSuitePState::TestExists(const std::string&) const»:
/usr/include/gtest/internal/gtest-internal.h:619:30: ошибка: запрос элемента «count» в «((const testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_», имеющего не классовый тип «const testing::internal::TypedTestSuitePState::RegisteredTestsMap» {aka «const int»}
  619 |     return registered_tests_.count(test_name) > 0;
      |                              ^~~~~
/usr/include/gtest/internal/gtest-internal.h: В функции-члене «const testing::internal::CodeLocation& testing::internal::TypedTestSuitePState::GetCodeLocation(const std::string&) const»:
/usr/include/gtest/internal/gtest-internal.h:623:40: ошибка: qualified-id in declaration before «it»
  623 |     RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
      |                                        ^~
/usr/include/gtest/internal/gtest-internal.h:624:5: ошибка: «it» was not declared in this scope; did you mean «int»?
  624 |     GTEST_CHECK_(it != registered_tests_.end());
      |     ^~~~~~~~~~~~
/usr/include/gtest/internal/gtest-internal.h:624:5: ошибка: запрос элемента «end» в «((const testing::internal::TypedTestSuitePState*)this)->testing::internal::TypedTestSuitePState::registered_tests_», имеющего не классовый тип «const testing::internal::TypedTestSuitePState::RegisteredTestsMap» {aka «const int»}
  624 |     GTEST_CHECK_(it != registered_tests_.end());
      |     ^~~~~~~~~~~~
/usr/include/gtest/internal/gtest-internal.h:625:12: ошибка: «it» was not declared in this scope; did you mean «int»?
  625 |     return it->second;
      |            ^~
      |            int
make[2]: *** [external/android-emugl/shared/emugl/common/CMakeFiles/emugl_common.dir/build.make:146: external/android-emugl/shared/emugl/common/CMakeFiles/emugl_common.dir/mutex_unittest.cpp.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:1326: external/android-emugl/shared/emugl/common/CMakeFiles/emugl_common.dir/all] Ошибка 2
make: *** [Makefile:146: all] Ошибка 2
make: выход из каталога «/home/khomyak/artix_pkg/anbox-nosystemd-git/src/build»

cpuinfo и PKGBUILD.

Ответ на: комментарий от hamsterxp

Ну при с++14 просто падает раньше и до этой проблемы может и не доходит.

Посмотрите в параметрах компиляции (cmakelists.txt) может там можно выключить gtest

irton ★★★★★
()

Можешь посмотреть с какими параметрами запускался компилятор на oom_adj.cpp и запустить с такими же, но вместо -c и -o чего-то.там.o передать -E, будет видно что там былло не так после препроцессора

mittorn ★★★★★
()