Fat R笔记……与减肥无关

Fat awful terrible Rubbish-bin

blackbox的编译……以及一些相关的废话……

,

为什么要编译blackbox呢?因为直接dpkg安装后运行blackbox,它告诉我
blackbox: //lib/libstdc++.so.5: version `GLIBCPP_3.2.2' not found (required by blackbox)
当时没仔细想原因,以为纯粹是编译时用的库版本比现在系统里的版本高,重新编译一下就没事了。于是到http://packages.debian.org把source和patch下回来,xlibs-dev等一堆依赖包安装好,然后打补丁(gunzip <blackbox_0.65.0.orig.tar.gz | patch -p1),接着.configure && make……对狗剩的速度已经心中有数了(编译一个helloworld要十五秒),知道它不花上十几分钟是跑不完那么“艰巨”的编译任务的,于是切换窗口干别的……然而当我再次切换回来的时候,发现已经内存不足down掉了

算了,毕竟总共只有64M的sdram,那么还是交叉编译吧……

由于交叉编译工具链里面没有xlibs-dev等开发库和头文件,就这么configure的话在Checking for X的时候会出错退出,因此首先就要解决这个问题。

已知X的header和lib分别位于/LX-SIS/usr/X11R6/include/LX-SIS/usr/X11R6/lib,gcc可以用参数-I/LX-SIS/usr/X11R6/include -L/LX-SIS/usr/X11R6/lib来指定它们。通过对比分析本地编译和交叉编译configure时生成的config.log和Makefile,发现用以下命令行就可以正确configure了:
$ ./configure --build=i686-linux --host=mipsel-linux --prefix=/LX-SIS/usr/X11R6 --x-includes=/LX-SIS/usr/X11R6/include --x-libraries=/LX-SIS/usr/X11R6/lib


接下来make的时候又出现问题,提示string和vector等文件不存在,看来是交叉编译工具链的libstdc++缺了什么。一开始我采取的措施是把狗剩系统里面的include和lib都ln -s到工具链中(PS一句,debian的那些库好像都是放在/usr/lib下面的,不会去动/lib里面的东西),然而再make还是不行。后来对比了一下工具链的原始文件,才发现问题在哪里。
当初的编译链,有./include,./lib,./mipsel-linux/include,./mipsel-linux/lib四个目录,这四个目录也都能被编译器搜索到。其中./include里面只有c++一个子目录,./lib下面也只有libiberty.a和一个gcc-lib子目录。当时玩glibc的时候mipsel-linux/lib被删掉用新编译的glibc替换,其中的libstdc++等文件(有用的似乎只有libstdc++.a 和libstdc++.so)被我转移到./lib下。 而./include则被我删掉了(大概当时我跟c++有仇 )所以才会丢失那些c++的头文件。把include从旧的工具链复制回来(没有尝试把libstdc++5-3.3-dev_3.3.5-13_mipsel.deb直接拿来用,估计需要重新编译才能),再重新make,这次顺利pass了(一下子就make完了,我一时没反应过来还以为出错了呢……)
然而回到狗剩上执行blackbox,还是提示glibc版本的错误……呃,which一下,我好像执行的是之前dpkg安装的那个blackbox,于是dpkg -P blackbox把它删掉,再试……结果还是老样子

后来又瞄了几眼狗剩的/lib和/usr/lib,看到有/lib/libstdc++.so.5.0.0和/usr/lib//LX-SIS/usr/lib/libstdc++.so.5.0.7 而ldd看到blackbox使用的是前者,也就是5.0.0的那个。由于交叉编译工具链用的是5.0.3,比那个新,所以会出现那个错误。可是之前明明是把libstdc++5_3.3.5-13_mipsel.deb装上去的了啊,为什么还会出现版本不对的错误呢?后来才突然明白过来,现在狗剩这个系统是在一个很小的系统上搭起来的,那个5.0.0是原来那个系统里带的,libstdc++5_3.3.5-13_mipsel.deb是安装到/usr/lib而不是/lib下,而/lib的优先级是最高的,所以那个usr/lib/libstdc++.so.5.0.7就没机会出场了。于是把/lib下面的libstdc++.so.5和libstdc++.so.5.0.0删掉,ldconfig一次,再重新执行blackbox,这次就能运行了。看看/lib,其实里面还有很多旧系统遗留下来的库,看来以后还是要继续小心……

干掉丑丑的属性页字体……总结备忘……跟Xserver相关的……

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies