2012-06-14 28 views
1

我需要製作一個QT應用程序才能在啓動嵌入式Linux系統時運行。我可以通過串口ttySAC0訪問系統。我嘗試將應用程序添加到inittab,它運行但tslib不工作,可能是因爲它找不到需要工作的環境變量,因爲我將這些環境變量設置爲在用戶運行後運行的/etc/.profile文件中登錄。我需要自動登錄一個用戶,這樣環境變量才能設置,以便tslib能夠工作,或者在不登錄的情況下設置這些環境變量。系統由buildroot和busybox構成。使用busybox自動登錄的嵌入式linux

+0

Hi @ iah.vector,你可以在/etc/init.d/S99_your_script下寫一個腳本。環境變量可以在這個腳本中設置,然後你可以在後臺模式下調用你的Qt應用程序。 –

回答

4

我已經想通了,我做了這個shell腳本:

#!/bin/sh 
# 
#Sets necessary environment variables and runs the desktop 
# 

export TSLIB_TSDEVICE=/dev/touchscreen-1wire 
export TSLIB_TSEVENTTYPE=INPUT 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_PLUGINDIR=/usr/lib/ts/ 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_CONFFILE=/etc/ts.conf 
export TSLIB_CALIBFILE=/etc/pointercal 
export LD_LIBRARY_PATH=/usr/lib 
export QTDIR=/usr/lib/qt 
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen-1wire 

/path/to/application -qws 

然後使其可執行文件:

$chmod +x startup.sh 

加入這一行到inittab:

tty1::once:/path/to/startup.sh 

現在,當我啓動時,應用程序運行正常與tslib,我仍然通過串行線訪問,只要我需要。

1

編寫一個/etc/init.d/S99myapp腳本,在執行必要的export VARIABLE=value命令以定義所需的所有環境變量後啓動您的應用程序。您可以在Buildroot源代碼中查找示例package/stunnel/S50stunnel以查看initscript的示例。

+0

我寫的rc腳本包含此命名S99exportEnvVars: #/ bin/sh的 # #出口Environmentvariables QT間期和tslib的 # 情況下, 「$ 1」 開始) 回聲「導出tslib的環境變量... 「 出口TSLIB_TSDEVICE =的/ dev /觸摸屏 - 的1-Wire 回聲 」導出QT環境變量...「 出口QTDIR =/usr/lib目錄/ QT 出口QWS_MOUSE_PROTO = tslib的是:/ dev /觸摸屏 - 的1-Wire ;; stop) ;; 重新啓動|重新加載) ;; *) 回聲「無效!」 exit 1 esac exit $? 當我重新啓動時,我得到了回顯行,這意味着腳本正在工作,但是當我登錄時,我發現沒有設置env變量。 –

+0

這是因爲您的出口是依賴於終端的。當你將它們放在'.bashrc'文件中時,它們不會保留。 – VivienG