Qt4.8.1移植至iOS的小体会

转载 2012年03月31日 11:22:24
前几天看到gitorious上有人移植了,但是下载链接打不开,于是clone了他的项目打算自己编译。后来发现他是在mac上移植的,mkspec还要自己重新。借鉴了他的代码,自己写了mkspec,感觉比他写得好。

    编译过程会遇到一些问题,只要是条件编译问题,解决起来不难。最恶心的一个问题是编译qlibraryinfo.cpp时出现如此错误

  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的源码,发现这么几句
  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竟然没有问题了。

   后最后终于到了振奋人心的链接过程了,有几个链接参数不支持,

  1. -Wl,-O1 -Wl,--no-undefined Wl,-so-name  
其中-so-name可以用这个来代替
  1. QMAKE_LFLAGS_SONAME         += -install_name$${LITERAL_WHITESPACE}  


去掉后可以了。

    编译好的库和一个测试程序放到ipad上,程序运行不起来,有类似如下错误:

    

  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


Qt4.8.1移植至iOS的小体会

04.01: 大部分模块都移植了,包括core, gui, declarative, sql, script, svg, xml, network(with ssl), multimedia, pho...
  • ibingow
  • ibingow
  • 2012年03月29日 22:25
  • 3470

Qt4.8.1移植至iOS的小体会

分类: Qt 2012-03-31 11:22 343人阅读 评论(0) 收藏 举报 前几天看到gitorious上有人移植了,但是下载链接打不开,于是clone了他的项目打算自己编...

QT4.8.1移植到ARM目标板

上一篇 : [交叉编译qt4.8.4 for ARM]遇到到问题 1.  在此基础上,将交叉编译好的qt4.8.1-for-arm移植到目标板: 进入/usr/local/qt4.8.1-for...

ubuntu12.04安装Qt4.8.1遇到问题

参考:Ubuntu下QT的安装详细教程 因为在主机上安装了一系列编译环境,依次为: 1. arm-none-linux-guneabi- 交叉编译工具链 2. 利用上面的工具链,交叉编译Qt的嵌入...

Qt4.8.1中 没有找到mingwm10.dll 完美解决

出处:http://116.255.173.144/index.php?c=article&a=read&id=49710 Qt4.8.1中 没有找到mingwm10.dll 完美解决 Qt...

qt-everywhere-opensource-src-4.8.1 出错:error: 'IPV6_MULTICAST_HOPS' was not declared in this scope

在编译:qt-everywhere-opensource-src-4.8.1出现如下错误: ...................... 明显,缺少IPV6_MULTICAST_XXXX等一系列定义,...
  • ieczw
  • ieczw
  • 2014年11月10日 10:00
  • 1314

Ubuntu12.04下安装Qt4.8.1

之前在编译Qt 4.4.3的时候卸载掉了Qt Creator,结果今天再安装的时候说没有可以执行的qmake-qt4,虽然说可以直接下一个可以执行的sdk,但我还是想体验一下安装Qt 4.8.1的过程...

Qt4.8.1学习笔记1—QTreeWidget控件的使用

 Qt的介绍以及安装这里就记录了,先说一下QtGUI的基础“信号(SIGNAL)与槽(SLOT)”。 其实信号与槽的概念很好理解,跟MFC的消息与响应机制类似,只不过MFC的消息响应机...
  • N_sev7
  • N_sev7
  • 2015年11月04日 18:07
  • 1193

QT4.8.1安装教程

环境:linux@ubuntu:~$ cat /proc/version Linux version 3.5.0-23-generic (buildd@akateko) (gcc version 4....

QT4.8.1 + VS2008

最近经常做政府相关的项目经常用vs2008,因为没有用到什么C++高级特性,所以C++11完全够用了。QT做界面还是比较方便的,而且它和标准库的兼容让我不得不赞一个。 好了,说了这么多的废话,咱们开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt4.8.1移植至iOS的小体会
举报原因:
原因补充:

(最多只允许输入30个字)