成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt 移植時出現編譯錯誤

移動開發
本文介紹的是Qt 移植時出現編譯錯誤,QT在移植過程中遇到的一個編譯問題,我們先來看內容,如何解決。

Qt 移植時出現編譯錯誤是本文要介紹的內容,問題的解決,我們先來看內容。決定開始 移植Linuxmini2440。首先就是在ubuntu下建立交叉編譯工具鏈。借著在Fedora 下建立ARM-Linux的交叉編譯工具的經驗,按理說應該是不會有問題的,但是結果是比在Fedora下碰到的問題多得多了。以下先介紹成功編譯的過程,碰到的問題和解決辦法后面說。

這次編譯過程中對我有重大幫助的資料有:

  1. 《 編譯Mysql時configure: error: No curses/termcap library found 的錯誤解決方法》  
  2. 《[原創]在ubuntu下動手編譯arm-elf工具》  
  3. 《在ubuntu下使用crosstool制作交叉編譯工具》  
  4. 《 ubuntu 8.04中編譯ARM交叉平臺的一點心得!》 

關于crosstool的基本知識在我以前的

  1. 《在 Fedora 下建立 ARM-Linux 交叉編譯環境》 

中已有介紹,這里我再多說,以下是具體過程:
(1)保證你的ubuntu8.10下安裝了以下軟件開發工 具。 Bison flex build-essential patch [color="#ff0000"]libncurses5-dev 我并沒有試過沒裝這些工具的后果,都是網上的經驗,你要是不信這個邪,就自己吃吃這個螃蟹。

(2)因為ubuntu8.10自帶的是gcc-4.3.2無法用crosstool正常編譯交叉編譯器,所以必須安裝gcc-4.1,但是不必卸載 4.3.2。方法是用新立得軟件包管理器安裝gcc-4.1,之后 參考

chinazcw的方法 sudo rm /usr/bin/gcc (刪除GCC,它只是個到gcc-4.3.2的軟連接文件)  

sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc 建立GCC到gcc-4.1的軟連接) 

(3)如果你運行ls -la /bin/sh

命令看到/bin/sh其實是一個指向dash的軟鏈接,則請運行以下命令,將/bin/sh鏈接到bash。sudo mv /bin/sh /bin/sh.oldsudo ln -sf bash /bin/sh

(4)按照老方法修改crosstool的文件:demo-arm9tdmi.sh、gcc-4.1.1-glibc-2.3.2.dat,最后運行demo-arm9tdmi.sh。這些過程請參考我以前的文檔

  1. 《在 Fedora 下建立 ARM-Linux 交叉編譯環境》。 

過程就這么簡單,但是有些是用失敗換來的。下面介紹下我的編譯血淚史:     一開始,我并不想用gcc-4.1而是想用自帶的gcc-4.3.2,然后...
  
(1)編譯到glibc的時候,在配置的時候會檢測gcc的版本,configure 腳本認為gcc-4.3.2版本太老(其實是因為當時gcc還沒有這么高的版本,只要不是3.2到4.1之間的版本,都認為too old),不能編譯。

這是可以解決的,方法就是修改glibc-2.3.2根目錄下 的configure 文件中的第1275行:

  1. test -n "$CC" && breakdoneif test -z "$CC";  
  2.  then  ac_verc_fail=yeselse   
  3.   # Found it, now check the version.   
  4.    echo "$as_me:$LINENO: checking version of $CC" >&5echo $ECHO_N "checking version of $CC... $ECHO_C" >
  5. &6  ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`  case $ac_prog_version in    '') 
  6. ac_prog_version="v. ?.??, bad";  
  7.     ac_verc_fail=yes;;    
  8.       3.[2-9]*|4.[[color="#ff0000"]0-3]*)     
  9.     ac_prog_version="$ac_prog_version, ok"ac_verc_fail=no;;    *) ac_prog_version="$ac_prog_version, bad";  
  10.    ac_verc_fail=yes;; 

這樣就可以騙過configure ,繼續編譯下去。

但是修改的時機要把握好,要在 demo-arm9tdmi.sh解壓完glibc-2.3.2后,運行其configure之前。我直接就將configure拷出來,修改后在crosstool解壓完所有文件后直接覆蓋源文件。
其實這種方法我在fedora9下使用crosstool時就用過,但是當時發現f9真是做得比f8差,歷史的倒退,所以就到回去用f8了,就沒寫文章總結。

(2)編譯gcc-3.3.6的時候,出現以下錯誤:/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments

這純屬軟件bug,因為使用open函數的時候,如果在第二個參數中使用了 O_CREAT,就必須添加第三個參數:創建文件時賦予的初始權限。 而在gcc-3.3.6/gcc/的collect2.c文件中有漏掉第三個參數的錯誤,而gcc-4.3對語法錯誤的檢查嚴格是出了名的(4.1就不會 因此錯誤退出),所以就退出了。    這也是可以解決的,就是在gcc-3.3.6/gcc/collect2.c中的第1575行改為:

  1. redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, [color="#ff0000"]0777); 

我還發現glibc-2.3.2/login/tst-grantpt.c也有一個類似錯誤,一起改過來,除后患。第44行:fd = open (file, O_RDWR | O_CREAT, [color="#ff0000"]0777);

修改的時機也要把握好,我是在crosstool解壓完所有文件后和之前configure 文件一起直接覆蓋源文件。

(3)經歷了以上的痛苦后,繼續編譯,會出現以下錯誤:*** buffer overflow detected ***: arm-9tdmi-linux-gnu-ar terminated

fuck!!!!!!!!編譯出來的 arm-9tdmi-linux-gnu-ar根本沒法用!被耍了!放棄gcc-4.3.2!!!!!   要是哪位仁兄解決了以上問題,并編譯成功,一定要通知小弟啊!

(4)安裝了gcc-4.1之后,重新編譯。心想這回好了吧?!不想,有出了以下錯誤:In [color="#ff0000"]file included from

  1. version.c:33:/home/tekkaman/working/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2
  2. /build-glibc/csu/version-info.h:2:1: missing terminating "[color="#000000"]character/home/tekkaman/working/crosstool-0.43/build/
  3. arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:3:1: missing terminating "character 

google后發現,原來是ubuntu將系統默認的shell設置成了dash (the Debian Almquist Shell),所以通過腳本生成的文件格式和bash的不一樣,導致了編譯錯誤。在使用了ursa的方法后問題解決。

  1. sudo mv /bin/sh /bin/sh.oldsudo ln -sf bash /bin/sh 

(5)繼續重新編譯,在gcc做好后(此時gcc已可用,只是gdb還沒編譯好),編譯gdb的時候出了以下錯誤:

  1. configure: error: no termcap library found 

很顯然,是因為沒裝一個庫文件造成的,google后發現正解:用新立得安裝libncurses5-dev(或是apt-get install libncurses5-dev)即可。  

最后,編譯成功,看到了盼望已久的“done”。

小結:關于Qt 移植時出現編譯錯誤的內容介紹完了,希望本文對你有所幫助!

 

責任編輯:zhaolei 來源: 互聯網
相關推薦

2010-09-17 08:40:49

JAVA編譯錯誤

2013-04-03 14:25:43

iOS開發Xcode編譯錯誤和警

2011-07-04 15:13:31

QT MPlayer 移植

2010-01-15 10:31:19

Linux編譯

2011-06-13 11:24:55

QT MPlayer 移植

2011-06-29 11:06:12

Qt Qvfb

2011-06-13 11:07:22

QT 移植

2010-05-27 13:48:21

MySQL安裝

2025-04-02 07:59:15

2011-06-09 16:47:56

Qt 嵌入式

2009-12-28 16:03:42

編寫ADO.NET

2011-06-15 18:20:20

Qt 移植 Android

2011-06-13 15:57:26

linux QT QTOPIA

2010-01-05 18:03:57

2011-06-29 10:46:01

Qt Eembedded Linux

2011-07-02 13:42:24

Qt 移植

2010-08-12 15:31:07

DB2數據庫

2011-06-08 15:27:24

QT QT 4.5 編譯

2011-06-09 15:18:07

QT 編譯

2011-06-21 16:51:21

Qt 靜態 編譯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九一视频在线播放 | 亚洲伊人精品酒店 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美综合一区 | 狠狠影院 | 日本字幕在线观看 | 国产99精品 | 欧美一级在线 | 亚洲啊v在线 | 国产一区免费 | 国产伦精品一区二区三区精品视频 | 天天欧美| 8x国产精品视频一区二区 | 国产福利二区 | 一级片av | 毛片入口 | 久久久精品国产 | 一级特黄色毛片 | 日韩精品 电影一区 亚洲 | 国产做a爱片久久毛片 | 精品免费av | 激情伊人网| 欧美天堂 | 夜夜骑首页 | 亚洲视频欧美视频 | 999久久久免费精品国产 | 国产精品久久久久久久 | 久久久久久网 | 欧美视频免费在线观看 | 久久久久高清 | 亚洲精品在线看 | 亚洲福利一区 | 国产成人一区二区三区电影 | 日韩一区二区av | 免费在线观看91 | 黑人巨大精品欧美一区二区一视频 | 日韩不卡在线 | 国产一区二区三区四区在线观看 | 亚洲欧美第一视频 | 亚洲人人 | 色吧色综合 |