$ cat /etc/apt/sources.list.d/diablo-hacking.list deb http://www.users.on.net/~toojays/maemo-development/jessie/ / deb-src http://www.users.on.net/~toojays/maemo-development/jessie/ /
$ sudo apt-get install diablo-gcc-5 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: diablo-root libgmp10 libmpc3 libmpfr4 Suggested packages: diablo-package-tools The following NEW packages will be installed: diablo-gcc-5 diablo-root libgmp10 libmpc3 libmpfr4 0 upgraded, 5 newly installed, 0 to remove and 1 not upgraded. Need to get 116 MB of archives. After this operation, 604 MB of additional disk space will be used. Do you want to continue? [Y/n] y WARNING: The following packages cannot be authenticated! diablo-root diablo-gcc-5 Install these packages without verification? [y/N] y ...
$ cat hello.cpp #include <iostream> int main () { std::cout << "Hello World! (built with compiler version " << __VERSION__ << ")\n"; return 0; } $ /opt/diablo/gcc-5/bin/arm-none-linux-gnueabi-g++ hello.cpp -o hello $ file hello hello: ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.8, not stripped
Nokia-N800-23-14:~# ./hello Hello World! (built with compiler version 5.1.0)
$ sudo apt-get install diablo-package-tools Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: diablo-package-tools 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 311 kB of archives. After this operation, 1150 kB of additional disk space will be used. WARNING: The following packages cannot be authenticated! diablo-package-tools Install these packages without verification? [y/N] y ...
$ sudo /opt/diablo/bin/apt-get update ... $ sudo /opt/diablo/bin/apt-get install libgtkmm-2.4-dev Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: dbus fontconfig gconf2 gtk20-l10n libatk1.0-0 libatk1.0-dev libcairo2 libcairo2-dev libcairomm-1.0-1 libcairomm-1.0-dev libdbus-1-3 libdbus-glib-1-2 libexpat1 libexpat1-dev libfontconfig1 libfontconfig1-dev libfreetype6 libfreetype6-dev libgconf2-6 libglib2.0-0 libglib2.0-data libglib2.0-dev libglibmm-2.4-1c2a libglibmm-2.4-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgtk2.0-dev libgtkmm-2.4-1c2a libice-dev libice6 libjpeg62 libpango1.0-0 libpango1.0-common libpango1.0-dev libpng12-0 libpng12-dev libsigc++-2.0-0c2a libsigc++-2.0-dev libsm-dev libsm6 libtiff4 libx11-6 libx11-data libx11-dev libxau-dev libxau6 libxcursor1 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxfixes3 libxft-dev libxft2 libxi6 libxml2 libxrandr2 libxrender-dev libxrender1 libxtst6 pkg-config sgml-base x11-common x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-render-dev x11proto-xext-dev xml-core xtrans-dev zlib1g-dev Suggested packages: libcairo2-doc libcairomm-1.0-doc libglib2.0-doc libgtkmm-2.4-doc libgtk2.0-doc ttf-kochi-gothic ttf-kochi-mincho ttf-thryomanes ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp libpango1.0-doc libsigc++-2.0-doc libgnome-dev sgml-base-doc Recommended packages: libatk1.0-data x-ttcidfont-conf The following NEW packages will be installed: dbus fontconfig gconf2 gtk20-l10n libatk1.0-0 libatk1.0-dev libcairo2 libcairo2-dev libcairomm-1.0-1 libcairomm-1.0-dev libdbus-1-3 libdbus-glib-1-2 libexpat1 libexpat1-dev libfontconfig1 libfontconfig1-dev libfreetype6 libfreetype6-dev libgconf2-6 libglib2.0-0 libglib2.0-data libglib2.0-dev libglibmm-2.4-1c2a libglibmm-2.4-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgtk2.0-dev libgtkmm-2.4-1c2a libgtkmm-2.4-dev libice-dev libice6 libjpeg62 libpango1.0-0 libpango1.0-common libpango1.0-dev libpng12-0 libpng12-dev libsigc++-2.0-0c2a libsigc++-2.0-dev libsm-dev libsm6 libtiff4 libx11-6 libx11-data libx11-dev libxau-dev libxau6 libxcursor1 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxfixes3 libxft-dev libxft2 libxi6 libxml2 libxrandr2 libxrender-dev libxrender1 libxtst6 pkg-config sgml-base x11-common x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-render-dev x11proto-xext-dev xml-core xtrans-dev zlib1g-dev 0 upgraded, 73 newly installed, 0 to remove and 2 not upgraded. Need to get 23.0 MB of archives. After this operation, 73.4 MB of additional disk space will be used. Do you want to continue? [Y/n] y WARNING: The following packages cannot be authenticated! x11-common libice6 x11proto-core-dev libice-dev libsm6 libsm-dev libxau6 libxdmcp6 libx11-data libx11-6 libxau-dev libxdmcp-dev x11proto-input-dev x11proto-kb-dev xtrans-dev libx11-dev libxext6 x11proto-xext-dev libxext-dev libxfixes3 libexpat1 libfreetype6 libfontconfig1 libxrender1 libxft2 zlib1g-dev libfreetype6-dev libexpat1-dev libfontconfig1-dev x11proto-render-dev libxrender-dev libxft-dev libdbus-1-3 dbus libglib2.0-0 libdbus-glib-1-2 libxml2 libgconf2-6 gconf2 fontconfig gtk20-l10n libatk1.0-0 pkg-config libglib2.0-dev libatk1.0-dev libpng12-0 libcairo2 libpng12-dev libcairo2-dev libcairomm-1.0-1 libcairomm-1.0-dev libglib2.0-data libsigc++-2.0-0c2a libglibmm-2.4-1c2a libsigc++-2.0-dev libglibmm-2.4-dev libgtk2.0-common libpango1.0-common libpango1.0-0 libxcursor1 libxi6 libxrandr2 libxtst6 libgtk2.0-bin libjpeg62 libtiff4 libgtk2.0-0 libpango1.0-dev libgtk2.0-dev libgtkmm-2.4-1c2a libgtkmm-2.4-dev sgml-base xml-core Install these packages without verification? [y/N] y ...
$ cat simple.cpp #include <gtkmm/button.h> #include <gtkmm/main.h> #include <gtkmm/window.h> class Window : public Gtk::Window { private: Gtk::Button m_goodbye_button; public: Window () : m_goodbye_button("Goodbye!") { set_title("Hello World!"); add(m_goodbye_button); m_goodbye_button.signal_clicked().connect([](){Gtk::Main::quit();}); show_all_children(); } }; int main(int argc, char** argv) { Gtk::Main kit(argc, argv); Window helloworld; Gtk::Main::run(helloworld); return 0; }
$ cat Makefile CXX := /opt/diablo/gcc-5/bin/arm-none-linux-gnueabi-g++ CXXFLAGS := -std=c++11 -Os # Tell pkg-config to look in our Diablo sysroot. PKG_CONFIG := PKG_CONFIG_LIBDIR=/opt/diablo/root/usr/lib/pkgconfig \ PKG_CONFIG_SYSROOT_DIR=/opt/diablo/root pkg-config CXXFLAGS += $(shell $(PKG_CONFIG) gtkmm-2.4 --cflags) LDLIBS := $(shell $(PKG_CONFIG) gtkmm-2.4 --libs) # gtkmm-2.4 uses auto_ptr, which is deprecated in C++11. # Silence warnings about that. CXXFLAGS += -Wno-deprecated-declarations # GCC complains that libsigc++-2.0 keeps changing the meaning of # slot_list. The following flag downgrades that error to a warning. An # alternate solution is to comment out the line about # SIGC_TYPEDEF_REDEFINE_ALLOWED in # /opt/diablo/root/usr/include/sigc++-2.0/sigc++/signal.h. That has the # benefit of eliminating the error/warning altogether. CXXFLAGS += -fpermissive simple: simple.o $(CXX) -o $@ $^ $(LDLIBS) clean: -rm -f simple simple.o .PHONY: clean