1 下载arm920t-eabi.tar.gz(arm-linux-gcc 4.1.2),解压到/opt/arm/4.1.2/目录下
2 打开qtcreator的Options选项,选择QT4选项,添加一个编译环境,Version name填Qte4.6.3 (这个可以随便填),qmake location填/opt/qte/bin/qmake(我先前已经编译了QT4.6.3 embeded,并安装在/opt/qte/目录下,自己相应修改),点Rebuild,应该会出错。
3 打开命令行,输入sudo ln -s /opt/arm/4.1.2/bin/arm-linux-g++ /usr/bin/ ,为arm-linux-g++建立符号链接,因为qtcreator貌似只认/usr/bin/目录下的,PATH里面无效。
4 到这一步已经快好了,但是点Rebuild还是会出错,错误的原因是什么 #include<new> 什么的,这是因为arm-linux-g++找不到头文件。首先,我是按照别人说的在.bashrc里面加入了环境变量:export CPLUS_INCLUDE_PATH=/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi ,然后重新打开qtcreator,点Rebuild,不行,还是出错。但是在~/qte/example/widgets/calculator/目录下,执行/opt/qte/qmake 然后make,已经没有问题了。所以得出结论是,GDM在打开Gnome的时候不会执行.bashrc文件。我需要找一个GDM会执行的文件放export。google的半天,说/etc/gdm/Xsession文件会被执行。但是我看了看这个文件,发现和网上说的不一样,我的是Archlinux。我这个貌似XDM才会执行。又google+乱看了半天,终于被我发现/etc/X11/xinit/xinitrc.d/目录下的都会被执行,于是写了一个cplus_include_path的bash文件,在里面export了CPLUS_INCLUDE_PATH这个环境变量。注销重新登陆,打开qtcreator,然后Rebuild,OK,succeed了。开心。
5 一不小心手贱点了QT IN PATH的Rebuild,fuck了,又出错了。而且出错信息显示,Linux上的QT也用了arm-linux-g++在编译,这当然要出错了。到命令行,unset了CPLUS_INCLUDE_PATH,又到calculator目录下,用本机的qmake,make,没有错误。总结下,就是CPLUS_INCLUDE_PATH是所有的g++都会使用的一个环境变量。把export CPLUS_INCLUDE_PATH=/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi改成了export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi,注销,测试,还是出错。export|grep CPLUS,发现CPLUS_INCLUDE_PATH这个环境变量与来是没有的,悲剧。此方法不通。又不断的尝试。我在想能不能把每个不同版本的g++的include path都独立开来。沿着这个方向,我找到了specs,看了老半天,这个也不方便,要用自定义的覆盖默认的specs,没有配置文件可以修改。后来找到了qmake的配置文件去了,发现qmake.conf可以自定义g++ gcc的参数,兴奋啊。找到了这个网页http://doc.trolltech.com/4.5/qmake-variable-reference.html#qmakespec 从头到尾大概的读了便,QMAKE_CXXFLAGS 看上去比较靠谱,于是编辑/opt/qte/mkspecs/linux-g++/qmake.conf,里面貌似没有提到这个变量,但是文件里面include了几个文件。一一打开这几个文件,最后在/opt/qte/mkspecs/common/g++.conf里发现了这个变量。原来的是QMAKE_CXXFLAGS += $$QMAKE_CFLAGS,我增加了一行QMAKE_CXXFLAGS += -I/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++ -I/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi,然后把/etc/X11/xinit/xinitrc.d/cplus_include_path删除,重新登陆,打开qtcreator,先对QT IN PATH进行Rebuild,OK,没有错误,然后对Qte 4.6.3 进行Rebuild,wonderful,也没有错误。终于把这个问题解决了。
6 看似很简单的一个问题,牵扯太多了,问题终于解决,真不容易啊。
特此记载。。。。。。。。。。。。。。。。。。。。。。。。