關(guān)于一些編譯錯(cuò)誤的處理 編譯過(guò)程中如果產(chǎn)生錯(cuò)誤信息,需要解決掉才能繼續(xù)編譯下去,錯(cuò)誤信息的產(chǎn)生主要是因?yàn)榫幾g器版本造成的,共有以下幾類(lèi)錯(cuò)誤信息: 1 缺少工具錯(cuò)誤
1.jpg (26.23 KB, 下載次數(shù): 24)
下載附件
2020-4-10 13:21 上傳
這是編譯時(shí)遇到的第一個(gè)問(wèn)題,編譯 qt2 時(shí)需要使用 uic 工具,uic 是 PC 上運(yùn)行的工具, 用來(lái)把 Qt 的界面文件,也就是.ui 文件轉(zhuǎn)換成.h 文件和.cpp 文件,轉(zhuǎn)換完成后才能交 給交叉編譯器編譯。 解 決 辦 法 :把 qtopia-free-2.2.0/dqt/bin 里 面 的 uic 文 件 拷 貝 到 qtopia-free-2.2.0/qt2/bin 下面即可。 注意:uic 拷貝到 qtopia-free-2.2.0/qt2/bin 后,需要修改一下 build 腳本文件,因?yàn)?/font> 如果您重新執(zhí)行 build 命令,該腳本會(huì)把剛才編譯中的 qtopia-free-2.2.0 文件夾刪除,重新 解壓,形成新的 qtopia-free-2.2.0,開(kāi)始編譯,這樣剛才拷貝的 uic 就沒(méi)意義了。 修改方法如下圖所示:
2.jpg (21.22 KB, 下載次數(shù): 20)
下載附件
2020-4-10 13:21 上傳
就是在 rm –fr qtopia-free-2.2.0 和 tar xfvz qtopia-free-src-2.2.0.tar.gz 語(yǔ)句前加上 #注釋掉,修改后保存退出。 然后執(zhí)行#./build,重新編譯。 2 缺少類(lèi)聲明 error: ‘QWSInputMethod’ has not been declared 修改方法如下: #cd /root/yizhi/qtopia-free-2.2.0/qt2/src/kernel # gedit qwindowsystem_qws.h 在前面增加以下兩行: class QWSInputMethod; class QWSGestureMethod; 保存退出,繼續(xù)編譯。 3 缺少文件錯(cuò)誤
3.jpg (32.21 KB, 下載次數(shù): 37)
下載附件
2020-4-10 13:21 上傳
源代碼需要 custom-linux-arm-g++.h/cpp 文件,但是沒(méi)找到。 解決辦法: #cd ./qtopia-free-2.2.0/qtopia/src/libraries/qtopia #cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h #cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp 繼續(xù)編譯 #cd /root/yizhi #./build 4 無(wú)法匹配到 QSizePolicy 類(lèi)的構(gòu)造函數(shù) 即 QSizePolicy 類(lèi)沒(méi)有提供特定參數(shù)的構(gòu)造函數(shù)
4.jpg (29.52 KB, 下載次數(shù): 26)
下載附件
2020-4-10 13:21 上傳
解決辦法: 查看出錯(cuò)信息的文件,這里是 passwordbase_p.cpp,且出錯(cuò)的地方是第 35 行,使用 find 命令找到該文件在 Ubuntu 中的具體位置: #find ./ -name passwordbase_p.cpp
5.jpg (22.85 KB, 下載次數(shù): 23)
下載附件
2020-4-10 13:21 上傳
找 到 后 在./qtopia-free-2.2.0/qtopia/src/libraries/qtopia/.ui/release-shared 目 錄下面,執(zhí)行以下命令,修改該文件: # gedit ./qtopia-free-2.2.0/qtopia/src/libraries/qtopia/.ui/release-shared/pas swordbase_p.cpp 移動(dòng)光標(biāo)到第 35 行,如下圖所示:
6.jpg (20.49 KB, 下載次數(shù): 29)
下載附件
2020-4-10 13:21 上傳
把 prompt->setSizePolicy(QsizePolicy((QsizePolicy::SizeType)7, (QsizePolicy::SizeType) 7,0,0,prompt->sizePolicy().hasHeightForWidth())) 函數(shù)中的 0,0 去掉,即: prompt->setSizePolicy(QsizePolicy((QsizePolicy::SizeType)7, (QsizePolicy::SizeType) 7,prompt->sizePolicy().hasHeightForWidth())) 去掉后如下圖:
7.jpg (20.87 KB, 下載次數(shù): 18)
下載附件
2020-4-10 13:21 上傳
保存退出,執(zhí)行如下命令重新編譯: #./build 重新編譯后,會(huì)出現(xiàn)若干次這個(gè)類(lèi)型的錯(cuò)誤,解決辦法非常相似,這里就不一一介紹了。 5 類(lèi)的成員函數(shù)前有額外的類(lèi)名字 如下圖:
8.jpg (29.38 KB, 下載次數(shù): 30)
下載附件
2020-4-10 13:21 上傳
解決辦法: 根據(jù)錯(cuò)誤提示信息找到 qdawg.cpp 文件,gedit 打開(kāi)該文件,移動(dòng)光標(biāo)到 294 行。
9.jpg (15.85 KB, 下載次數(shù): 23)
下載附件
2020-4-10 13:21 上傳
修改后如下圖:
10.jpg (15.59 KB, 下載次數(shù): 37)
下載附件
2020-4-10 13:21 上傳
保存退出,繼續(xù)編譯 #./build 6. open 函數(shù)調(diào)用缺少必要的參數(shù) 如下圖提示的錯(cuò)誤:
11.jpg (29.02 KB, 下載次數(shù): 26)
下載附件
2020-4-10 13:21 上傳
解決辦法參考下圖:
12.jpg (29.42 KB, 下載次數(shù): 25)
下載附件
2020-4-10 13:21 上傳
打開(kāi) qmemoryfile_unix.cpp 文件,修改第 51 行
13.jpg (17.8 KB, 下載次數(shù): 27)
下載附件
2020-4-10 13:21 上傳
f=::open(tempFile,latin1(),0_CREAT | 0_WRONLY); 修改為 f=::open(tempFile,latin1(),0_CREAT | 0_WRONLY,0666);即增加 0666 參數(shù), 保存,退出。 對(duì)于 open 函數(shù)來(lái)說(shuō),僅當(dāng)創(chuàng)建新文件時(shí),第三個(gè)參數(shù)使用,用于指定文件的訪問(wèn)權(quán)限 位 注 意:共 有 兩 處 這 樣 的 修 改, 另 外 一 處: qtopia-free-2.2.0\qt2\src\tools\qmemoryfile_unix.cpp 文件的第 143 行位置,修改 方 法與 qmemoryfile_unix.cpp 文件相似。 #./build 重新編譯 7 缺少 this 指針 如下圖:
14.jpg (27.56 KB, 下載次數(shù): 25)
下載附件
2020-4-10 13:21 上傳
解決辦法:執(zhí)行下面的命令 # gedit ./qtopia-free-2.2.0/qt2/include/qvaluestack.h 移動(dòng)光標(biāo)到 57 行 將 remove( this->fromLast());改為 this->remove( this->fromLast()); 保存退出。 8 缺少系統(tǒng)頭文件 如下圖所示:
15.jpg (27.13 KB, 下載次數(shù): 29)
下載附件
2020-4-10 13:21 上傳
解決辦法如下: # gedit .\ qtopia-free-2.2.0\qt2\src\kernel\qpixmapcache.cpp 修改第 125 行為
16.jpg (18.33 KB, 下載次數(shù): 20)
下載附件
2020-4-10 13:21 上傳
即: #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) //# include<asm/page.h> //PAGE_SIZE,PAGE_MASK,PAGE_ALIGN 這樣修改是因?yàn)樾碌?Linux 內(nèi)核源碼中已經(jīng)不包含這個(gè)頭文件了。 另外其他的地方也用到了該頭文件,同樣需要去掉,執(zhí)行以下命令: # gedit ./qtopia-free-2.2.0/qt2/tools/qvfb/qvfbview.cpp 移動(dòng)到第 39 行,修改為下圖所示:
17.jpg (17.96 KB, 下載次數(shù): 24)
下載附件
2020-4-10 13:21 上傳
修改原因是因?yàn)?asm/page.h 文件里面定義了一些宏,咱們?cè)谶@里重新定義了必須使用 的宏,所以這里就不需要 asm/page.h 文件了。 說(shuō)明:繼續(xù)編譯后會(huì)出現(xiàn)幾次以上類(lèi)型的錯(cuò)誤,出現(xiàn)的錯(cuò)誤類(lèi)型就是以上總結(jié)的幾種 (出錯(cuò)的信息通過(guò) google 能找到解決方法),修改方法按以上步驟即可,主要就是發(fā)現(xiàn)哪個(gè) 文件出錯(cuò),找到該文件,用 gedit 打開(kāi)該文件,移動(dòng)到出錯(cuò)的行上,修改,保存退出。出錯(cuò) 的文件和行號(hào)是根據(jù)編譯時(shí)的錯(cuò)誤提示信息來(lái)找到的,一定要查找第一個(gè) Erro 的地方,這里 是需要重點(diǎn)關(guān)注的。通過(guò)這幾種錯(cuò)誤類(lèi)型的修改,您會(huì)對(duì) Qt 移植有了新的認(rèn)識(shí),也提高了您 的軟件移植能力。 編譯成功完成后,Qtopia2.2.0 會(huì)自動(dòng)的安裝到 qtopia-free-2.2.0/qtopia/zImage/opt 下面,如下圖
18.jpg (13.05 KB, 下載次數(shù): 28)
下載附件
2020-4-10 13:21 上傳
進(jìn)入到 Qtopia 錄下面,如圖:
19.jpg (15 KB, 下載次數(shù): 25)
下載附件
2020-4-10 13:21 上傳
注 意 : 編 譯 好 的 Qtopia 下 面 沒(méi) 有 字 體 , 自 己 需 要 把 字 體 放 到 Qtopia/lib/fonts 下面,qtopia-free-2.2.0/qt2/lib/fonts 文件夾下有各種可以用的字 體,但是我們只需要 helvetica 類(lèi)型,該類(lèi)型支持中文。執(zhí)行以下命令: #cp/root/yizhi/qtopia-free-2.2.0/qt2/lib/fonts/Helvetica* /root/yizhi/qtopia-fr ee-2.2.0/qtopia/image/opt/Qtopia/lib/fonts/ 另 外 需 要 把/root/yizhi/armlib 下 面 的 文 件 全 部 拷 貝 到 /root/yizhi/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/lib/下面 字體文件和庫(kù)文件拷貝完成后,把 Qtopia 整個(gè)錄拷貝到文件系統(tǒng)的 /opt 錄下面,如 果該目錄下面已經(jīng)有迅為電子提供的 Qtopia 文件夾,您可以把迅為電子提供的 Qtopia 文件 夾刪除掉,來(lái)運(yùn)行您自己編譯的版本,運(yùn)行方法參考下一章節(jié)的 Qtopia2.2.0 的使用。 更多內(nèi)容:關(guān)注迅為電子 |