编译arm-qt的经验教训

很久很久以前(也就是大三上学期),我和队友两个人一同做了个具有ARM底层与Qt界面的一个小项目,而我做的就是Qt部分!我要说的并不是如何做的问题,而是环境准备的问题。

当时编译arm-qt时遇到tslib无法找的问题,tslib是其中的触摸屏驱动,接着转而去编译tslib库,也是好久才编译出了tslib的库文件,接着很糊涂的和arm-qt连接在一起编译通过了arm-qt的开发环境!

前段时间我把ubuntu系统重新安装了一下,也没意识到要去备份这些东西,搞的现在为了完成我的项目+毕业设计又要重新构建qt的编译环境。可是我又遇到了和以前一样的问题,纠结啊….很长时间了,一直我不能集中精力去开发qt程序,一心放在qt的环境上了,真后悔当初的糊涂经过,没有任何资料可去查询。

现在我又重新编译通过了arm-qt,心中一阵惊喜。

既然如此就要吸取上次的教训,写个遇到问题的解决方法和从其中获得的经验。

先说经验:

权限的问题

先说权限因为它是第一步,没有足够的权限是怎么都编译不通过的,不仅如此,我说的权限还有另一曾的意思,在编译的时候尽量使用root的权限,在ubuntu中也就是sudo su,不要使用sudo make…等等操作,因为sudo是暂时获取root权限的意思,暂时也是root,root的配置文件就未必和你的配置文件一致,比如:我编译时
不用sudo 有arm-linux-gcc指令,而使用sudo make时竟然出现arm-linux-gcc无法找到的问题,当时我就纳闷,但冷静一想答案就出来了,sudo中并没有arm-linux-gcc指令,进入sudo su后验证了我的想法。

我遇到的是这个问题,但是不排除还有其他的问题
所以尽量使用root用户,并把该配置的东西配置好!

做好备份

上次就是因为编译好了,而没能备份导致现在又要重新编译,重点是要备份什么东西?

一、tslib的库文件,在我的计算机上是/usr/local/tslib,这个不大,可以备份起来可能以后还会用的到
二、arm-qt编译好的文件,这个很重要,备份好后,以后只要用的到直接拿过来就行,这个事linux的一大优势,另为也可以下载到arm开发板中当作运行环境,很好的一样东西

英语学习

从编译出错、查错中我可以体会到:东西还是国外人的。
tslib是国外开源的,qt是国外开源的。
出错直接进行搜索时可以发现,如果是国内的网站基本上都很难解决你的问题,我知道我对我遇到错误进行查询时是这样,到国外的网站时又很难读的懂,今天我静下心来慢慢看,竟然还真把问题解决了,一个外国人回答的另一个外国人的问题,我照这他的回答,很快解决了问题。这个就是英语的问题。毕竟东西事人家的,解决的方法也总是了解的人才能更好的解决。国内要么是拷贝的,要么是无法解决。国人的悲催点啊…..

问题

tslib无法找到

这个肯定是去下载tslib文件,编译出tslib库了
链接

编译tslib时发现autogen.sh无法正常运行玩

我观察了一下它只是运行了第一句话,遇到exit ?就直接结束了,这样我就把exit ?这句话直接屏蔽掉了,当时认为可能要必须解决,但是现在发现tslib库也编译出来了,或许编译的结果不太完整吧,但是现在是能用就行了。

tslib中make -j4时出现很多错误

我观察了下好象是说在./tests/ts_test.c中找不到rpl_realloc宏,我也到ts_test.c中搜索了下没有,但是怎么解决呢?我搜索了一下!
链接

这里有人同样问:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
undefined reference to `rpl_malloc'
hi,
i am trying to install the libnss_pgsql module following carefully the steps from a guide i found on the net. I was on the compilation part and did the following:
1)./configure --with-gnu-ld
2)make
3)ld src/.libs/libnss_pgsql.so
ld: warning: cannot find entry symbol _start; not setting start address
src/.libs/libnss_pgsql.so: undefined reference to `rpl_malloc'
src/.libs/libnss_pgsql.so: undefined reference to `rpl_realloc'
it is said that there should be no more warning/error than the first line for the module to work, i tried google unfortunately i have yet to find a solution. i am fairly new to fedora/linux so please bear with me
Regards,
kris

其中有一人回答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Hi Nishit,
This is in response to your private message regarding the above error.
When you run the "configure" script, you'll see that a file called "config.h" will be created in the same directory.
Search for and comment out the following lines in this file:
#undef malloc
&
#undef realloc
After this run make, and then make install.
Imp note: Do not run "configure" again after editing "config.h" because your changes will be overwritten.
Post back here if it works!
- Googie

意思应该很明白,就是编辑./config.h文件,具体位置 没看懂,我就在最后#define mallo rpl_malloc之后添加上了

1
2
#undef malloc
#undef realloc

很幸运,接下来就很容易的通过了,真是一阵振奋。其他我更感叹这些东西到底是什么样的神人写出来的

接着编译arm-qt就行了

现在就应该没有什么大的问题了

Brick wechat
扫一扫,用手机看更方便(^ ◕ᴥ◕ ^)