嵌入式linux系統開發

 

 

 

UBoot

mkimage -C none -A arm -T script -d boot.cmd boot.scr

 

Qt 配置和編譯

Qt編譯後要在qtcreater中用不能改變編譯時的路徑,要保持原路徑,不然添加qmake出錯

 修改平臺文件

vim ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.config

//修改編譯器 
# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc 
QMAKE_CXX               = arm-linux-gnueabihf-g++  
QMAKE_LINK              = arm-linux-gnueabihf-g++ 
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ 
QMAKE_CFLAGS +=-mfpu=neon -marm -mcpu=cortex-a7
QMAKE_CXXFLAGS +=-mfpu=neon -marm -mcpu=cortex-a7    //媒體加速
# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip

//opengl添加
QMAKE_INCDIR_OPENGL_ES2 +=$$AW_LICHEE_ROOT/tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/include
QMAKE_LIBDIR_OPENGL_ES2 +=$$AW_LICHEE_ROOT/tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/lib
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2

初始化 

$./configure \
		-opensource \
		-confirm-license \
		-extprefix ./Qt-5.11 \
		-R /usr/lib \
		-no-strip \
		-c++std c++11 \
		-shared \
		-nomake examples \
		-accessibility \
		-no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \
		-no-sql-odbc -no-sql-psql -no-sql-sqlite2  -no-sql-tds \
 		-no-sql-sqlite -plugin-sql-sqlite \
		-no-qml-debug \
		-no-sse2 \
		-no-sse3 \
		-no-ssse3 \
		-no-sse4.1 \
		-no-sse4.2 \
		-no-avx \
		-no-avx2 \
		-no-mips_dsp \
		-no-mips_dspr2 \
		-qt-zlib \
		-no-journald \
		-qt-libpng \
		-qt-libjpeg \
		-qt-freetype \
		-qt-harfbuzz \
		-openssl \
		-no-xinput2 \
		-no-xcb-xlib \
		-no-glib \
		-no-pulseaudio \
		-alsa \
		-gui \
		-widgets \
		-v \
		-optimized-qmake \
		-no-cups \
		-no-iconv \
		-evdev \
		-no-icu \
		-no-fontconfig \
		-no-strip \
		-pch \
		-dbus \
		-no-use-gold-linker \
		-xplatform linux-arm-gnueabi-g++ \
		-no-directfb \
		-eglfs \
		-qpa eglfs \
		-linuxfb \
		-no-kms \
		-sysroot $SYSROOT \
		-opengl es2 \
		-no-system-proxies \
		-no-slog2 \
		-no-pps \
		-no-imf \
		-no-lgmon \
		-tslib \
		-device-option CROSS_COMPILE=/usr/local/arm-linux-gnueabihf-

//參數說明
./configure -help 查看

-prefix         安裝路徑
-extprefix      指定sysroot後的安裝路徑 不然路徑是相對sysroot安裝的
-opensource     構建Qt開源版本
-commercial     構建Qt商業版本
-confirm-license自動許可認證
-no-c++11       關閉c++11
-c++11          開啓c++11
-c++std c++11   編譯器支持c++11
-shared         編譯共享庫
-static         編譯靜態庫
-tslib          觸摸庫支持
-no-sql-<driver> 禁止sql <driver>   例如: -no-sql-sqlite
-qt-sql-<driver> 開啓sql <driver>
-plugin-sql-<driver>  將sql <driver> 做爲運行時插件
-D <string>     宏定義
-I <string>     頭文件路徑
-L <string>     庫文件路徑
-make <part>    指定需要編譯部分
-nomake <part>  指定不需要編譯部分
-skip <module>  指定不需要編譯的模塊
-R <string>     添加庫路徑
-l <string>     顯示添加庫
-no-rpath       不使用庫的安裝路徑作爲運行時路徑
-rptah          使用庫的安裝路徑作爲運行時路徑
-strip          裁剪庫
-no-strip       不裁剪庫
-device-option <key=value>  添加設備特定選項
-eglfs         qt5程序運行插件
-linuxfb       linux幀緩衝
-qpa <name>    設置默認qpa平臺
-xplatform linux-arm-gnueabi-g++ 交叉編譯時指定目標平臺
-opengl es2    支持opengl

根文件系統添加qt

TOUCHSCREEN=/dev/input/ts2
if [ -e /dev/input/ts2 ]; then
        TOUCHSCREEN=/dev/input/ts2
elif [ -e /dev/input/ts1 ]; then
        TOUCHSCREEN=/dev/input/ts1
elif [ -e /dev/input/ts0 ]; then
        TOUCHSCREEN=/dev/input/ts0
fi

export  QTDIR=/usr/local/Qt-5.11.3/
export  QT_ROOT=$QTDIR
export  PATH=$QTDIR/bin:$PATH

export  LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins

export QT_QPA_PLATFORM=eglfs    // 指定QPA平臺
export QT_QPA_EGLFS_FB=/dev/fb0   //指定QPA的framebuffer

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
#export LD_PRELOAD=/usr/lib/libts.so
#/usr/lib/preloadable_libiconv.so:
#       export QWS_MOUSE_PROTO="Tslib:/dev/input/event4"
export TSLIB_TSDEVICE=$TOUCHSCREEN
#       export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event4
export QT_LOGGING_RULES=qt.qpa.input=false
export QT_QPA_EVDEV_DEBUG=0
export QT_QPA_PLATFORM=eglfs
export QT_QPA_GENERIC_PLUGINS=tslib,evdevmouse,evdevkeyboard
#export QT_QPA_GENERIC_PLUGINS=evdevtouch
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90

export QML_IMPORT_PATH=$QT_ROOT/qml
export QML2_IMPORT_PATH=$QT_ROOT/qml

#export QWS_MOUSE_PROTO=
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`

開發應用 

Qt編譯後要在qtcreater中用不能改變編譯時的路徑,要保持原路徑,不然添加qmake出錯

下載qt-creater 
安裝
指定qmake爲編譯好的路徑下
指定交叉編譯工具鏈

如果使用了opengl需要添加
LIBS +=   -L../ -lGLESv2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章