Нужна помощь с приложением C ++ на Ubuntu GNOME 17.04

Основной ответ

Должна быть опция Archive Mounter. Просто щелкните изображение правой кнопкой мыши и выберите «Archive Mounter», это должно смонтировать большинство файловых систем на основе дисков, таких как ISO 9660 (на левой панели Nautilus и на рабочем столе). Однако он монтирует изображения:

~ /.gvfs

Альтернативный ответ

Создан чрезвычайно полезный скрипт, называемый nautilus-mount-image, который должен монтировать большинство файловых систем.

Это может скачать здесь.

Это из PPA Raúl González Duque; глядя на код, он, по сути, выясняет, какой тип файловой системы имеет изображение, и пытается смонтировать его. Он поддерживает:

ISO 9660 (CD, DVD и т. Д.), NTFS, EXT2 / 3/4, HFS, ReiserFS И многое другое ...

Для общего использования вы можете используйте этот скрипт, щелкнув правой кнопкой мыши файл, который хотите установить, и щелкнув «Mount image ...» следующим образом:

Чтобы ответить на ваши запросы:

ISO 9660 (CD, DVD и т. д.), NTFS, EXT2 / 3/4, HFS, ReiserFS Он должен отображаться на рабочем столе и на левой панели nautilus и многое другое. .. Требуется ли пользовательские привилегии. Автоматически монтируется в папку под / media / (поэтому не нужно создавать папку точки монтирования). Кнопка извлечения расположена в Nautilus или щелчком правой кнопкой мыши исходный файл и выбором Unmount.

К сожалению, я не знаю, как этот скрипт будет реагировать на изображения с несколькими файловыми системами. Котята могут гореть. Вы были предупреждены;)

Ссылка:

скачан здесь

2
задан 7 July 2017 в 17:56

6 ответов

Как оказалось, патч на https://reviews.freebsd.org/D10815, предложенный @rvery (спасибо), оказался патчем для freebsd ... однако он заставил меня думать, что может быть патчем в другом месте, которое будет работать в Ubuntu.

Я закончил электронную почту взад и вперед с tobias.kortkamp@gmail.com, а Тобиас предоставил мне ссылку в https: //reviews.freebsd .org / D10815 , который позволит компиляции кода Git (с большим количеством предупреждений) после применения патча с patch -p1 -i /path/to/sigc.patch.

Fix build with libsigc++ 2.4+ (group was removed).
diff -Naur a/actions.cc b/actions.cc
--- a/actions.cc    2015-11-04 19:56:49.351107678 +0100
+++ b/actions.cc    2015-11-04 19:57:07.161246969 +0100
@@ -51,10 +51,8 @@
    context->set_icon(pb, pb->get_width(), pb->get_height());
 }

-bool negate(bool b) { return !b; }
-
 TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) {
-   get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending)));
+    get_selection()->set_select_function(sigc::mem_fun(*this, &TreeViewMulti::negate_pending));
 }

 enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC };
diff -Naur a/actions.h b/actions.h
--- a/actions.h 2015-11-04 19:56:49.351107678 +0100
+++ b/actions.h 2015-11-04 19:57:07.161246969 +0100
@@ -30,6 +30,11 @@
    virtual void on_drag_begin(const Glib::RefPtr<Gdk::DragContext> &context);
 public:
    TreeViewMulti();
+    bool negate_pending(const Glib::RefPtr<Gtk::TreeModel>& model,
+                        const Gtk::TreeModel::Path& path,
+                        bool path_currently_selected) {
+        return !pending;
+    }
 };

 class Actions {
1
ответ дан 22 May 2018 в 20:46

Как оказалось, патч на https://reviews.freebsd.org/D10815, предложенный @rvery (спасибо), оказался патчем для freebsd ... однако он заставил меня думать, что может быть патчем в другом месте, которое будет работать в Ubuntu.

Я закончил электронную почту взад и вперед с tobias.kortkamp@gmail.com, а Тобиас предоставил мне ссылку в https: //reviews.freebsd .org / D10815 , который позволит компиляции кода Git (с большим количеством предупреждений) после применения патча с patch -p1 -i /path/to/sigc.patch.

Fix build with libsigc++ 2.4+ (group was removed). diff -Naur a/actions.cc b/actions.cc --- a/actions.cc 2015-11-04 19:56:49.351107678 +0100 +++ b/actions.cc 2015-11-04 19:57:07.161246969 +0100 @@ -51,10 +51,8 @@ context->set_icon(pb, pb->get_width(), pb->get_height()); } -bool negate(bool b) { return !b; } - TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) { - get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending))); + get_selection()->set_select_function(sigc::mem_fun(*this, &TreeViewMulti::negate_pending)); } enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC }; diff -Naur a/actions.h b/actions.h --- a/actions.h 2015-11-04 19:56:49.351107678 +0100 +++ b/actions.h 2015-11-04 19:57:07.161246969 +0100 @@ -30,6 +30,11 @@ virtual void on_drag_begin(const Glib::RefPtr<Gdk::DragContext> &context); public: TreeViewMulti(); + bool negate_pending(const Glib::RefPtr<Gtk::TreeModel>& model, + const Gtk::TreeModel::Path& path, + bool path_currently_selected) { + return !pending; + } }; class Actions {
1
ответ дан 18 July 2018 в 10:36

Как оказалось, патч на https://reviews.freebsd.org/D10815, предложенный @rvery (спасибо), оказался патчем для freebsd ... однако он заставил меня думать, что может быть патчем в другом месте, которое будет работать в Ubuntu.

Я закончил электронную почту взад и вперед с tobias.kortkamp@gmail.com, а Тобиас предоставил мне ссылку в https: //reviews.freebsd .org / D10815 , который позволит компиляции кода Git (с большим количеством предупреждений) после применения патча с patch -p1 -i /path/to/sigc.patch.

Fix build with libsigc++ 2.4+ (group was removed). diff -Naur a/actions.cc b/actions.cc --- a/actions.cc 2015-11-04 19:56:49.351107678 +0100 +++ b/actions.cc 2015-11-04 19:57:07.161246969 +0100 @@ -51,10 +51,8 @@ context->set_icon(pb, pb->get_width(), pb->get_height()); } -bool negate(bool b) { return !b; } - TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) { - get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending))); + get_selection()->set_select_function(sigc::mem_fun(*this, &TreeViewMulti::negate_pending)); } enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC }; diff -Naur a/actions.h b/actions.h --- a/actions.h 2015-11-04 19:56:49.351107678 +0100 +++ b/actions.h 2015-11-04 19:57:07.161246969 +0100 @@ -30,6 +30,11 @@ virtual void on_drag_begin(const Glib::RefPtr<Gdk::DragContext> &context); public: TreeViewMulti(); + bool negate_pending(const Glib::RefPtr<Gtk::TreeModel>& model, + const Gtk::TreeModel::Path& path, + bool path_currently_selected) { + return !pending; + } }; class Actions {
1
ответ дан 24 July 2018 в 19:36

easystroke отлично работает на Arch (я использую его сам, из репозиториев).

Этот первый патч предназначен для построения с помощью gcc7

From 9e2c32390c5c253aade3bb703e51841748d2c37e Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Sat, 28 Jan 2017 01:26:00 +0000
Subject: [PATCH] Remove abs(float) function that clashes with std::abs(float)

Depending on which C++ standard library headers have been included there
might an abs(float) function already declared in the global namespace,
so the definition in this file conflicts with it. This cause a build
failure with GCC 7, which conforms more closely to the C++ standard with
respect to overloads of abs.

Including <cmath> and adding a using-declaration for std::abs ensures
that the standard std::abs(float) function is available. This solution
should be portable to all compilers.
---
 handler.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/handler.cc b/handler.cc
index 8830ea2..685b1ff 100644
--- a/handler.cc
+++ b/handler.cc
@@ -23,6 +23,8 @@
 #include <X11/extensions/XTest.h>
 #include <X11/XKBlib.h>
 #include <X11/Xproto.h>
+#include <cmath>  // std::abs(float)
+using std::abs;

 XState *xstate = nullptr;

@@ -533,8 +535,6 @@ class WaitForPongHandler : public Handler, protected Timeout {
    virtual Grabber::State grab_mode() { return parent->grab_mode(); }
 };

-static inline float abs(float x) { return x > 0 ? x : -x; }
-
 class AbstractScrollHandler : public Handler {
    bool have_x, have_y;
    float last_x, last_y;

. Этот второй вариант - это проблема, с которой вы столкнулись,

diff -uprb easystroke-0.6.0.orig/actions.cc easystroke-0.6.0/actions.cc
--- easystroke-0.6.0.orig/actions.cc    2013-03-27 17:52:38.000000000 +0200
+++ easystroke-0.6.0/actions.cc 2015-12-07 22:07:17.720041171 +0200
@@ -51,10 +51,11 @@ void TreeViewMulti::on_drag_begin(const
    context->set_icon(pb, pb->get_width(), pb->get_height());
 }

-bool negate(bool b) { return !b; }
-
 TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) {
-   get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending)));
+   get_selection()->set_select_function(
+       [this](Glib::RefPtr<Gtk::TreeModel> const&, Gtk::TreeModel::Path const&, bool) {
+           return !pending;
+       });
 }

 enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC };
diff -uprb easystroke-0.6.0.orig/Makefile easystroke-0.6.0/Makefile
--- easystroke-0.6.0.orig/Makefile  2013-03-27 17:52:38.000000000 +0200
+++ easystroke-0.6.0/Makefile   2015-12-07 21:54:47.926776791 +0200
@@ -21,8 +21,7 @@ LOCALEDIR= $(PREFIX)/share/locale
 DFLAGS   =
 OFLAGS   = -O2
 AOFLAGS  = -O3
-STROKEFLAGS  = -Wall -std=c99 $(DFLAGS)
-CXXFLAGS = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags`
+CXXFLAGS = -Wall $(DFLAGS) -std=c++11 -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags`
 CFLAGS   = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtk+-3.0 --cflags` -DGETTEXT_PACKAGE='"easystroke"'
 LDFLAGS  = $(DFLAGS)

@@ -63,7 +62,7 @@ $(BINARY): $(OFILES)
    $(CXX) $(LDFLAGS) -o $@ $(OFILES) $(LIBS)

 stroke.o: stroke.c
-   $(CC) $(STROKEFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $<
+   $(CC) $(CFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $<

 %.o: %.c
    $(CC) $(CFLAGS) $(OFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $<

Пакет AUR имеет 4 патча, вы можете проверить его на исходной странице исходного файла . Вы можете загрузить исправления оттуда, а также нажать «Просмотреть PKGBUILD», чтобы увидеть инструкции по сборке (довольно просто, применить исправления и затем сделать). Это строится из git, но для такого проекта, который в основном мертв, - я думаю, это не большая разница. За последние 2 года всего одна фиксация.

1
ответ дан 22 May 2018 в 20:46
  • 1
    Отличный ресурс! Благодаря! Знаете ли вы, что исправления также разрешают крах при выходе? – heynnema 13 July 2017 в 16:26
  • 2
    Я не могу применить второй файл патча. Первая часть части очень похожа на часть sigc.patch ... поэтому я не знаю, нужно ли мне применять оба. Вторая часть терпит неудачу, как первая часть. Сообщения об ошибках Hunk. – heynnema 13 July 2017 в 23:33

easystroke отлично работает на Arch (я использую его сам, из репозиториев).

Этот первый патч предназначен для построения с помощью gcc7

From 9e2c32390c5c253aade3bb703e51841748d2c37e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely <jwakely@redhat.com> Date: Sat, 28 Jan 2017 01:26:00 +0000 Subject: [PATCH] Remove abs(float) function that clashes with std::abs(float) Depending on which C++ standard library headers have been included there might an abs(float) function already declared in the global namespace, so the definition in this file conflicts with it. This cause a build failure with GCC 7, which conforms more closely to the C++ standard with respect to overloads of abs. Including <cmath> and adding a using-declaration for std::abs ensures that the standard std::abs(float) function is available. This solution should be portable to all compilers. --- handler.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handler.cc b/handler.cc index 8830ea2..685b1ff 100644 --- a/handler.cc +++ b/handler.cc @@ -23,6 +23,8 @@ #include <X11/extensions/XTest.h> #include <X11/XKBlib.h> #include <X11/Xproto.h> +#include <cmath> // std::abs(float) +using std::abs; XState *xstate = nullptr; @@ -533,8 +535,6 @@ class WaitForPongHandler : public Handler, protected Timeout { virtual Grabber::State grab_mode() { return parent->grab_mode(); } }; -static inline float abs(float x) { return x > 0 ? x : -x; } - class AbstractScrollHandler : public Handler { bool have_x, have_y; float last_x, last_y;

. Этот второй вариант - это проблема, с которой вы столкнулись,

diff -uprb easystroke-0.6.0.orig/actions.cc easystroke-0.6.0/actions.cc --- easystroke-0.6.0.orig/actions.cc 2013-03-27 17:52:38.000000000 +0200 +++ easystroke-0.6.0/actions.cc 2015-12-07 22:07:17.720041171 +0200 @@ -51,10 +51,11 @@ void TreeViewMulti::on_drag_begin(const context->set_icon(pb, pb->get_width(), pb->get_height()); } -bool negate(bool b) { return !b; } - TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) { - get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending))); + get_selection()->set_select_function( + [this](Glib::RefPtr<Gtk::TreeModel> const&, Gtk::TreeModel::Path const&, bool) { + return !pending; + }); } enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC }; diff -uprb easystroke-0.6.0.orig/Makefile easystroke-0.6.0/Makefile --- easystroke-0.6.0.orig/Makefile 2013-03-27 17:52:38.000000000 +0200 +++ easystroke-0.6.0/Makefile 2015-12-07 21:54:47.926776791 +0200 @@ -21,8 +21,7 @@ LOCALEDIR= $(PREFIX)/share/locale DFLAGS = OFLAGS = -O2 AOFLAGS = -O3 -STROKEFLAGS = -Wall -std=c99 $(DFLAGS) -CXXFLAGS = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags` +CXXFLAGS = -Wall $(DFLAGS) -std=c++11 -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags` CFLAGS = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtk+-3.0 --cflags` -DGETTEXT_PACKAGE='"easystroke"' LDFLAGS = $(DFLAGS) @@ -63,7 +62,7 @@ $(BINARY): $(OFILES) $(CXX) $(LDFLAGS) -o $@ $(OFILES) $(LIBS) stroke.o: stroke.c - $(CC) $(STROKEFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $< + $(CC) $(CFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $< %.o: %.c $(CC) $(CFLAGS) $(OFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $<

Пакет AUR имеет 4 патча, вы можете проверить его на исходной странице исходного файла . Вы можете загрузить исправления оттуда, а также нажать «Просмотреть PKGBUILD», чтобы увидеть инструкции по сборке (довольно просто, применить исправления и затем сделать). Это строится из git, но для такого проекта, который в основном мертв, - я думаю, это не большая разница. За последние 2 года всего одна фиксация.

1
ответ дан 18 July 2018 в 10:36

easystroke отлично работает на Arch (я использую его сам, из репозиториев).

Этот первый патч предназначен для построения с помощью gcc7

From 9e2c32390c5c253aade3bb703e51841748d2c37e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely <jwakely@redhat.com> Date: Sat, 28 Jan 2017 01:26:00 +0000 Subject: [PATCH] Remove abs(float) function that clashes with std::abs(float) Depending on which C++ standard library headers have been included there might an abs(float) function already declared in the global namespace, so the definition in this file conflicts with it. This cause a build failure with GCC 7, which conforms more closely to the C++ standard with respect to overloads of abs. Including <cmath> and adding a using-declaration for std::abs ensures that the standard std::abs(float) function is available. This solution should be portable to all compilers. --- handler.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handler.cc b/handler.cc index 8830ea2..685b1ff 100644 --- a/handler.cc +++ b/handler.cc @@ -23,6 +23,8 @@ #include <X11/extensions/XTest.h> #include <X11/XKBlib.h> #include <X11/Xproto.h> +#include <cmath> // std::abs(float) +using std::abs; XState *xstate = nullptr; @@ -533,8 +535,6 @@ class WaitForPongHandler : public Handler, protected Timeout { virtual Grabber::State grab_mode() { return parent->grab_mode(); } }; -static inline float abs(float x) { return x > 0 ? x : -x; } - class AbstractScrollHandler : public Handler { bool have_x, have_y; float last_x, last_y;

. Этот второй вариант - это проблема, с которой вы столкнулись,

diff -uprb easystroke-0.6.0.orig/actions.cc easystroke-0.6.0/actions.cc --- easystroke-0.6.0.orig/actions.cc 2013-03-27 17:52:38.000000000 +0200 +++ easystroke-0.6.0/actions.cc 2015-12-07 22:07:17.720041171 +0200 @@ -51,10 +51,11 @@ void TreeViewMulti::on_drag_begin(const context->set_icon(pb, pb->get_width(), pb->get_height()); } -bool negate(bool b) { return !b; } - TreeViewMulti::TreeViewMulti() : Gtk::TreeView(), pending(false) { - get_selection()->set_select_function(sigc::group(&negate, sigc::ref(pending))); + get_selection()->set_select_function( + [this](Glib::RefPtr<Gtk::TreeModel> const&, Gtk::TreeModel::Path const&, bool) { + return !pending; + }); } enum Type { COMMAND, KEY, TEXT, SCROLL, IGNORE, BUTTON, MISC }; diff -uprb easystroke-0.6.0.orig/Makefile easystroke-0.6.0/Makefile --- easystroke-0.6.0.orig/Makefile 2013-03-27 17:52:38.000000000 +0200 +++ easystroke-0.6.0/Makefile 2015-12-07 21:54:47.926776791 +0200 @@ -21,8 +21,7 @@ LOCALEDIR= $(PREFIX)/share/locale DFLAGS = OFLAGS = -O2 AOFLAGS = -O3 -STROKEFLAGS = -Wall -std=c99 $(DFLAGS) -CXXFLAGS = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags` +CXXFLAGS = -Wall $(DFLAGS) -std=c++11 -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtkmm-3.0 dbus-glib-1 --cflags` CFLAGS = -Wall $(DFLAGS) -DLOCALEDIR=\"$(LOCALEDIR)\" `pkg-config gtk+-3.0 --cflags` -DGETTEXT_PACKAGE='"easystroke"' LDFLAGS = $(DFLAGS) @@ -63,7 +62,7 @@ $(BINARY): $(OFILES) $(CXX) $(LDFLAGS) -o $@ $(OFILES) $(LIBS) stroke.o: stroke.c - $(CC) $(STROKEFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $< + $(CC) $(CFLAGS) $(AOFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $< %.o: %.c $(CC) $(CFLAGS) $(OFLAGS) -MT $@ -MMD -MP -MF $*.Po -o $@ -c $<

Пакет AUR имеет 4 патча, вы можете проверить его на исходной странице исходного файла . Вы можете загрузить исправления оттуда, а также нажать «Просмотреть PKGBUILD», чтобы увидеть инструкции по сборке (довольно просто, применить исправления и затем сделать). Это строится из git, но для такого проекта, который в основном мертв, - я думаю, это не большая разница. За последние 2 года всего одна фиксация.

1
ответ дан 24 July 2018 в 19:36
  • 1
    Отличный ресурс! Благодаря! Знаете ли вы, что исправления также разрешают крах при выходе? – heynnema 13 July 2017 в 16:26
  • 2
    Я не могу применить второй файл патча. Первая часть части очень похожа на часть sigc.patch ... поэтому я не знаю, нужно ли мне применять оба. Вторая часть терпит неудачу, как первая часть. Сообщения об ошибках Hunk. – heynnema 13 July 2017 в 23:33

Другие вопросы по тегам:

Похожие вопросы: