UbuntuにsambaでBBBをマウントしてソースから構築してみる
環境
HOST
Ubuntu 15.10 : 4.2.0-18-generic
BeagleboneBlack
Debian GNU/Linux 8 : 3.8.13-bone74
クロスコンパイル用ツール
gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.xz を/home/qt-bbb/optに展開
Ubuntu上にqt5.5のソースを用意
qt5.5.1のソースを/home/qt-bbb/qt5 に展開
qt5/qtbase/mkspecs/devices/linux-beagleboard-g++/ を
qt5/qtbase/mkspecs/devices/linux-bbb-g++ にコピーして
qt5/qtbase/mkspecs/devices/linux-bbb-g++/qmake.conf を編集
# # qmake configuration for the BeagleBoard and BeagleBoard xM boards # http://beagleboard.org/ MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) include(../../common/gcc-base-unix.conf) include(../../common/g++-unix.conf) load(device_config) QT_QPA_DEFAULT_PLATFORM = eglfs # modifications to g++.conf QMAKE_CC = $${CROSS_COMPILE}gcc QMAKE_CXX = $${CROSS_COMPILE}g++ QMAKE_LINK = $${QMAKE_CXX} QMAKE_LINK_SHLIB = $${QMAKE_CXX} # modifications to linux.conf QMAKE_AR = $${CROSS_COMPILE}ar cqs QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard # <-- ここを変更 #modifications to gcc-base.conf QMAKE_CFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS += $${COMPILER_FLAGS} QMAKE_CXXFLAGS_RELEASE += -O3 QMAKE_LIBS += -lrt -lpthread -ldl # Extra stuff (OpenGL, DirectFB, ...) QMAKE_INCDIR_EGL = QMAKE_LIBDIR_EGL = QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} # No need for any special EGL device integration. # Prioritize the default, compiled-in integration over any plugins. EGLFS_DEVICE_INTEGRATION = none # Sanity check deviceSanityCheckCompiler()
Configure
$ cd qt5 $ mkdir build-bbb $ cd build-bbb $ ../configure -opensource -confirm-license -no-pch -prefix /opt/qt5.5-bbb -hostprefix /mnt/bbb/opt/qt5.5-bbb -release -force-debug-info -device linux-bbb-g++ -make libs -nomake tests -nomake examples -device-option CROSS_COMPILE=/home/qt-bbb/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf- -sysroot /mnt/bbb -v $ make -j 4 $ sudo make install
出来上がったホストの/opt/qt5.5-bbbをBBBの/optへコピーする
BBB上でldconfigを使ってライブラリを有効にする(下記参照)
エラーメッセージに対応してBBBに追加でインストールしたパッケージ
# apt-get install linux-headers-3.8.13-bone74 # apt-get install libsdl-dev libxcb1-dev libxcb-image0-dev libxcb-icccm4-dev libxcb-keysyms1-dev
QtcreatorでQtquickが使えないのでBBBからUbuntuに/opt/qt5.5-bbbをコピーしたら使えるようになった
上のconfigure option の -hostprefix /opt/qt5.5-bbbはどういう意味があるのだろうか?
Qt5のアプリケーションを実行できるようにBBBでqt5.5のライブラリを有効にする
環境変数 LD_LIBRARY_PATHに /opt/qt5.5-bbb/libを追加しても良いがシステムに設定する
# nano /etc/ld.so.conf.d/qt5.5.conf <== 新規ファイル編集 /opt/qt5.5-bbb/lib <== ファイルにこの行を追加 # ldconfig <== ライブラリを追加 # ldconfig -v <== 確認