Qt4.8.1移植至iOS的小體會

來源:互聯網
上載者:User

前幾天看到gitorious上有人移植了,但是下載連結打不開,於是clone了他的項目打算自己編譯。後來發現他是在mac上移植的,mkspec還要自己重新。借鑒了他的代碼,自己寫了mkspec,感覺比他寫得好。

    編譯過程會遇到一些問題,只要是條件編譯問題,解決起來不難。最噁心的一個問題是編譯qlibraryinfo.cpp時出現如此錯誤

[plain]
view plaincopy
  1. {standard input}:4384:Expected comma after segment-name  
  2. {standard input}:4384:Rest of line ignored. 1st junk character valued 32 ( ).  

網上查了一下,資料很少,而且都是mac的gcc編譯會出現這個錯誤,但是找不到解決方案。這應該是一個彙編錯誤,後來在google code上看到了as的源碼,發現這麼幾句

[cpp]
view plaincopy
  1. SKIP_WHITESPACE();  
  2.     segname = input_line_pointer;  
  3.     do{  
  4.         c = *input_line_pointer++ ;  
  5.     }while(c != ',' && c != '\0' && c != '\n');  
  6.     if(c != ','){  
  7.         as_bad("Expected comma after segment-name");  
  8.         ignore_rest_of_line();  
  9.         return;  
  10.     }  

可能有希望了。於是我一步步來,先預先處理,然後彙編,最後編譯成.o檔案,最後這步果然錯了,就是那個錯誤。於是開啟彙編代碼,找到那行,再根據as的代碼,在那行最後加了個逗號,竟然編譯成功了。冊那,超有成就感,還從沒這麼搞過。後來發現改了mkspec竟然沒有問題了。

   後最後終於到了振奮人心的連結過程了,有幾個連結參數不支援,

[plain]
view plaincopy
  1. -Wl,-O1 -Wl,--no-undefined Wl,-so-name  

其中-so-name可以用這個來代替

[plain]
view plaincopy
  1. QMAKE_LFLAGS_SONAME         += -install_name$${LITERAL_WHITESPACE}  

去掉後可以了。

    編譯好的庫和一個測試程式放到ipad上,程式運行不起來,有類似如下錯誤:

    

[plain]
view plaincopy
  1. dyld: Library not loaded: @executable_path/  
  2.   Referenced from: /usr/lib/libQtNetwork.4.dylib  
  3.   Reason: no suitable image found.  Did find:  
  4.     /private/var/mobile/./: not a file  
  5.     /private/var/mobile/: not a file  
  6.     /usr/local/lib/: not a file  
  7.     /usr/lib/: not a file  
  8. Trace/BPT trap: 5  

感覺是連結參數的問題,有些參數是抄gitorious上那人的,去掉後就好了。後來重寫了mkspecs,發現編譯很順利,之前的彙編問題也不見了,不明真相,估計是某個cxxflag搞鬼吧,不管了。

    目前移植了core, xml, network, sql模組,測試了QtCore和QtNetwork模組,工作正常。gui模組還有編譯錯誤,繼續努力!

放上連結

我在gitorius上項目為:https://gitorious.org/~ibingow/qt/ibingows-qt-ios-plaszma

編譯好的庫在這裡下載:http://code.google.com/p/qtbuild/downloads/list

轉自:http://blog.csdn.net/ibingow/article/details/7409111

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.