『壹』 qt 中運行文件時許可權不夠怎樣解決
用命令:ls -al se 看看許可權!然後用chmod修改許可權。
『貳』 如何編譯arm上運行的qt2可執行文件
編譯好的QT的程序,一般會有幾個.CPP\.h文件,這么多的文件我們要怎麼樣編譯。首先,我們需要安裝QT版本的庫,一定要注意,這個庫文件一定和開發板上的是同一個庫。我們假設這個庫名字叫qtembed450-arm。以下步驟一定要注意:
1.安裝目錄一定要在「/usr/local/」下;
2.安裝成功後,這步非常關鍵,一定要設置環境變數,而且,我們要設置三個環境變數,這樣做有三個目的:①可以在任何路徑下用庫里的命令②編譯時候可以指定編譯規則為arm-linux-g++③編譯時候可以指定到所需要的庫文件。那麼安裝後,輸入一下命令:gedit /root/.bashrc.這個命令執行後就進入到設置環境變數的地方,我們要加入以下三個環境變數的設置:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default
以上設置非常的重要,非常的關鍵。呵呵,先照著設置,具體原因我會細談。注意,我編譯用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以打開看看哦!環境變數設置好後,用which qmake-arm 命令來確認下是否成功,呵呵。
3.准備工作做到這里,算是進行一半了,哎,真累啊!還要接著寫呢。接下來我們要把我們的編譯好的QT程序的文件夾打開,把裡面的 .CPP/.h文件拷貝出來,新建立一個文件夾;
4.把以上的文件里的.cpp .h文件復制後新建立一個文件夾。
5.新文件夾建立後,在linux終端中進入到該文件夾所在目錄下,執行這個命令:qmake-arm -project命令,千萬注意,-project 和arm之間一定要有空格啊!該命令執行後,會生成一個.pro文件,緊接著呢,執行qmake-arm命令,該命令執行後呢,會生成一個Makefile文件,這步很關鍵哦,沒有這步就不會有Makefile文件,一般在這步會出現很多錯誤,就是庫沒有發現之類,這個時候,一定要檢查前面的步驟,仔細檢查看是否是錯誤。我們這個時候打開Makefile文件看一下,會發現,裡面的編譯已經變成arm-linux-g++。這個時候,就踏實,接下來怎麼辦?還用問嗎,直接make下就好了,哈哈,簡單吧!看到上面的qtmyjpg文件了嗎?這個是可以在開發板上運行的哦!接下來不用我說了吧,直接發送到開發板上執行,可以看到圖片嘍!
6.下到開發板上之後呢,通常會發現沒有許可權,執行chmod +x qtmyjpg 就可以了,但是注意,要執行這個qtmyjpg文件,一定要這樣輸入命令:./qtmyjpg -qws為什麼需要加這個參數呢?很簡單,你不加執行時會出現錯誤原因,自己看下吧,哈哈!
7.一般這個時候觸摸屏需要矯正。進入「/usr/tslib/bin/」,查看裡面的文件,有一個「ts-calibrate」文件,執行這個文件,./ts-calibrate 後,可以看到LCD屏幕上出現十字點,用觸摸筆點一下就可以,至此,整個QT在LCD上顯示整理完畢,花了我半下午時間加上對曹老師的請教,終於完成,嘿嘿!趕緊試試哦!
『叄』 我在虛擬機里裝了ubuntu,安裝了qt sdk ,啟動了qt creator ,無法創建工程,提示許可權不足
o(∩∩)o...哈哈,你估計是你在虛擬機裡面安裝的時候選擇了NTFS文件系統~
Ubuntu系統裡面,任何NTFS文件系統內的任何程序都沒有可執行許可權~
『肆』 QT怎麼給一個文件設置讀寫許可權
下面是常用的修改許可權的方法:
1、首先找到拒絕訪問的文件夾,在其上滑鼠右鍵,選擇屬性,之後切換到「安全」選項下,之後在底部可以看到有「高級」設置。
2、選擇「高級」選項後會彈出文件夾的高級設置框屬性,切換到「所有者」選項卡下,在其底部可以找到「編輯」操作選項。
3、點擊編輯選項後,在新彈出的窗口中雙擊用戶賬號「Achai」,注意一定要選擇下面的「替換子容器和對象的所有者」,如果不選擇此項打開此文件夾後,下面的子文件夾我們還是無法打開,選擇後點「應用」。
『伍』 Qt交叉編譯遇到的問題
QT相關的安裝軟體包:
(1) tmake-1.13.tar.gz (編譯工具,如progen與tmake)
(2) qt-embedded-2.3.7.tar.gz (提供了qte的庫)
(3) qt-x11-2.3.2.tar.gz (為了生成相應的QT工具,如designer和qvfb等)
(4) qtopia-free-1.7.0.tar.gz (QTE的桌面環境程序)
(5) cross-3.3.2.tar.bz2 (交叉編譯工具)
一、安裝工具
1 安裝 tmake
在 Linux 命令模式下運行以下命令:
tar xfz tmake-1.11.tar.gz
export TMAKEDIR=$PWD/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/bin:$PATH
2 安裝 Qt/Embedded 2.3.7
在 Linux 命令模式下運行以下命令:
tar xfz qt-embedded-2.3.7.tar.gz
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure –qconfig local–qvfb -depths 4,8,16,32
make sub-src
cd ..
上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定 Qt 嵌入式開發包生成虛擬緩沖幀工具qvfb,並支持 4,8,16,32 位的顯示顏色深度。另外我們也可以在 configure 的參數中添加-system-jpeg 和 gif,使 Qt/Embedded 平台能支持 jpeg、gif 格式的圖形。
上述命令 make sub-src 指定按精簡方式編譯開發包,也就是說有些 Qt 類未被編譯。Qt 嵌入式開發包有 5種編譯范圍的選項,使用這些選項,可控制 Qt 生成的庫文件的大小,但是您的應用所使用到的一些 Qt 類將可能因此在 Qt 的庫中找不到鏈接。編譯選項的具體用法可運行./configure -help 命令查看。
在這一過程的configure中出現了問題:有一個變數沒有聲明,發現是少了一個頭文件,加上即可,make順利通過,看到了enjoy!
3 安裝 Qt/X11 2.3.2
在 Linux 命令模式下運行以下命令:
tar xfz qt-x11-2.3.2.tar.gz
cd qt-2.3.2
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -no-opengl
make
make -C tools/qvfb
mv tools/qvfb/qvfb bin
cp bin/uic $QTEDIR/bin
cd ..
根據開發者本身的開發環境,也可以在 configure 的參數中添加別的參數, 比如-no-opengl 或-no-xfs,可以鍵入./configure -help 來獲得一些幫助信息。
在這個安裝過程中也出現了很多錯誤,典型的就是在make過程中:
/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QMap<QString, QString> >' to 'const char*' for argument '1' to 'int remove(const char*)'
/usr/local/qt-2.3.2/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QString]':
xml/qxml.cpp:2502: instantiated from here
/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QString>' to 'const char*' for argument '1' to 'int remove(const char*)'
make[2]: *** [xml/qxml.o] Error 1
make[2]: Leaving directory `/usr/local/qt-2.3.2/src'
make[1]: *** [sub-src] Error 2
make[1]: Leaving directory `/usr/local/qt-2.3.2'
make: *** [init] Error 2
這個錯誤是說,在文件qvaluestack.h的57行出錯。改正方法是修改文件qt-2.3.2/ include/qvaluestack.h的 第57行,將remove( this->fromLast() );改為 this->remove( this->fromLast() );
修改時可能要更改文件許可權,變成可寫的,chmod 666 qvaluestack.h。然後make順利通過,看到了enjoy。
二、交叉編譯 Qt/Embedded 的庫
開發居於 Qt/Embedded 的應用程序要使用到 Qt/Embedded 的庫,編寫的 Qt 嵌入式應用程序最終是在YLE270開發板上運行的,因此在把 Qt 嵌入式應用程序編譯成支持 YLE270 的目標代碼之前,需要兩樣東西,一個是 arm9 的 linux 編譯器,另一個是經 arm9 的linux 編譯器編譯過的 Qt/Embedded 的庫。安裝交叉編譯工具 cross-3.3.2 前面已經安裝過了。
這一步主要是配置 Qt/Embedded2.3.7 的安裝,Qt/Embedded 的安裝選項有很多個,您可以在命令行下直接輸入「./configure」來運行配置,這時安裝程序會一步一步提示你輸入安裝選項。您也可以在「./configure」後輸入多個安裝選項直接完成安裝的配置。在這些選項中有一個選項決定了編譯 Qt/Embedded 庫的范圍,即可以指定以最小,小,中,大,完全 5 種方式編譯 Qt/Embedded 庫。另外 Qt/Embedded 的安裝選項還允許我們自己定製一個配置文件,來有選擇的編譯 Qt/Embedded 庫,這個安裝選項是「-qconfig local」 ;當我們指定這個選項時,Qt/Embedded庫在安裝過程中會尋找qt-2.3.7/src/tools/qconfig-local.h 這個文件,如找到這個文件,就會以該文件裡面定義的宏,來編譯鏈接 Qt/Embedded 庫。
具體過程如下:
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
make clean
./configure –xplatform linux-arm-g++ -shared –debug (接下行)
-qconfig local -qvfb -depths 4,8,16,32
make
cd ..
在make中出現了錯誤,有變數沒有聲明,原來是優龍公司為了避免初學者在一開始就直接接觸到 Qt/Embedde 的復雜的宏編譯選項,把這些宏定義到一個名為 qconfig-local.h的安裝配置文件中,在安裝 Qt/Embedded 的時候,需要把這個文件復制到 Qt/Embedded 的安裝路徑的/src/tools 子路徑下,
cp /配置文件所在路徑/qconfig-local.h ./src/tools
make順利通過,看到了enjoy。
最後就可以在命令行下輸入make 命令對整個工程進行編譯鏈接了,在這里,要把過程中產生的文件放在同一個文件夾裡面,方便應用。
在最後make完畢以後我還是遇到了一個問題,就是生成的可執行文件不能運行,運行時提示:./hello cannot execute binary file,當然不能直接在自己的主機上運行了,因為生成的二進制文件要下到板子上運行的。接上液晶屏,板子上電,把生成的可執行文件下載到板子上,要chmod一下,不然許可權不夠,終於在液晶屏上看到了自己弄的小程序,好開心!
三、添加一個 Qt/Embedded 應用到 QPE
以hello,world!為例
1 在工作的機器上解包 qtopia
tar zxvf qtopia-free-1.7.x.tar.gz
cd qtopia-free-1.7.x
export QTDIR=$QTEDIR
export QPEDIR=$PWD
export PATH=$QPEDIR/bin:$PATH
注意在上面已經設定環境變數 QPEDIR 為 QPE 的安裝(解包)路徑。
2 建立 Hello,World 的例子程序的圖標文件
方法是:製作一個 32 X 32 大小的 PNG 格式的圖標文件,將該文件存放在$QPEDIR/pics/inline 目錄下,然後使用以下命令將$QPEDIR/pics/inline 目錄下的所有圖形文件轉換成為一個 c 語言的頭文件,這個頭文件包含了該目錄下的圖形文件的 rgb 信息。
qembed --images $QPEDIR/pics/inline/*.*
> $QPEDIR/src/libraries/qtopia/inlinepics_p.h
3 交叉編譯 qtopia
在$QPEDIR 路徑下,運行以下命令
cd src
./configure –platform linux-arm-g++
make
cd ..
在這一過程中也出現了比較大的錯誤,在make的時候又出現了error,是resource.cpp的174行的變數qembed_findImage沒有聲明,考慮到以前遇到的情況,推斷可能是少了某個頭文件,但是又不知道是哪一個,google了很久都沒有找到解決辦法,沒辦法只好點開src/libraries/qtopia下面的每一個頭文件看了一遍,還是沒有發現有含有這個變數的文件,繼續google,然後發現了inlinepics_p.h中包含qembed_findImage,於是vi /usr/local/qtopia-free-1.7.0/src/libraries/qtopia/inlinepics_p.h,發現inlinepics_p.h是空白的,原來是
qembed --images $QPEDIR/pics/inline/*.*
> $QPEDIR/src/libraries/qtopia/inlinepics_p.h
出了錯誤,重新操作一遍這一步,再查看inlinepics_p.h,發現正常了,要繼續交叉編譯qtopia:
make clean
./configure –platform linux-arm-g++
『陸』 Qt 編譯好的 可執行文件 不能運行是怎麼回事
缺少動態鏈接庫,你的qt是動態編譯的,根據提示上你qt的安裝目錄上考到你的exe文件夾里
『柒』 安裝QT老是顯示個人文件夾保存位置無效,沒有許可權在此寫入數據
你的 磁碟 寫入 許可權 被拒絕了
你點擊右鍵 ------屬性 -----安全將 拒絕許可權去掉就可以了
『捌』 qt中執行的shell腳本需要root許可權,怎麼辦
root方法:
1、打開手機設置--開發者選項--usb調試功能設置。
2、一鍵root這樣的Kingroot、刷機精靈等設置下手機就好了。
3、順暢的讓手機上獲取到最高的root許可權了。
通過這樣的方式就讓手機上授權獲取到手機上比較好了。
『玖』 qt 啟動程序失敗,路徑或者許可權錯誤
有可能是軟體中的一些文件丟失,重新安裝軟體。
或者要以管理員許可權運行。
『拾』 qt編譯生成的可執行文件打開不了
是缺少環境變數 導致載入不到需要的動態庫 把qt路徑的bin 和 lib 添加到環境變數裡面