Skip navigation.

Fat R笔记……与减肥无关

Fat awful terrible Rubbish-bin

Posts tagged with "狗剩"

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,其实里面还有很多旧系统遗留下来的库,看来以后还是要继续小心……

glibc 2.3.6,俺可耻地败给你鸟……

, ,

编译是没问题了,然而install到/usr后,似乎没有效果,debian的程序还是会提示找不到GLIBC 2.3,于是只好尝试install到/下面。不幸的是,系统就因此boot不起来了... 用的是nfs,编译也是交叉编译,boot不起来也不用痛苦得想死……而且root fs建起来后也没装多少别的东西,直接删掉重建也不心疼……
  症状是init提示打不开libc.so.6,说不存在这个文件。靠,人家明明白白地就住在/lib里面,为啥你楞是看不到捏……难道Libc 2.3跟2.2是不兼容的?不能直接覆盖过去?还是我的步骤有问题?(也没啥步骤不步骤的,就是交叉编译,指定prefix为NFS的root,然后make,然后make install)还是我的编译选项有问题?
  虽然没有2.3也能活,但是大便的那些软件包好像都是要2.3的,for redhat的那些可以用在2.2下面的binary非常非常的少,基本上都要自己编译(想想看,交叉编译还好,本地编译的话……以狗剩的性能……唉,不用多说了……还能有什么感觉呢 )。本地编译的编译环境还是很容易建立的,有现成的binary可以用,我用sdelinux v6.03.00-3顺利把工具链搭起来了。然而工具链里面没有make,还要到ftp.gnu.org上下一个source,交叉编译用
./configure --build=i686-linux --host=mipsel-linux --prefix=/LX-SIS/usr

这种标准的配置就可以了。然而我还没试过在上面本地编译……这种可怕的事情能避免则避免吧

用狗剩的kernel把redhat 7.1给boot起来了

, ,

然而这个redhat 7.1也是空空的很多东西都没有(毕竟只是root FS),而且似乎还有很多小问题
但看起来似乎比之前用的那个好一些了
嗯,继续装软件吧……至少能用rpm了……
希望能够直接兼容mips的binary...

吼。。。。

, ,

交叉编译gcc和glibc好痛苦啊!!!!!!!辛辛苦苦等了n久,结果只等到一个莫名其妙的错误,结果一天时间就花在等编译器报错和在google上找线索了…… 本来想着先编译dpkg,然后直接用debian现成的for mips的gcc和glibc包,然而辛辛苦苦交叉编译完dpkg,却又说要个啥ldconfig,一查,这是glibc的东西……

一天下来,几乎被这些错综复杂的软件包弄得精神错乱了……该死的龙芯!!我恨你!!!(嗯……其实该怨恨的是blx……不给我一个完整一点的系统,自己又太菜……旁边那台狗剩2多可爱,一个完整的debian装在里面,连gaim都有——虽然之前它的libc也是不完整的。)


还没吼完,那边居然make完了……我还不敢相信似的又连敲了两次make -___-
赶快记一下参数:
../glibc-2.3.6/configure  --build=i686-linux --host=mipsel-linux --prefix=/LX-SIS/usr --disable-profile --enable-add-ons --without-gd

(先把nptl这个add-on去掉)
现在make install,似乎也通过了


然后再试试dpkg……
dpkg: `update-rc.d' not found on PATH.
dpkg: 1 expected program(s) not found on PATH.

哭……update-rc.d是大便的东西,不知道能不能继续搞下去了……


另外,改进了一下autosave的UserJS,现在支持多个账号的情况了(我纯粹是为了喜欢穿马甲的人着想啊!我本身懒得去弄n个账号的……)

放个测试版出来:
myoperaautosave.js



晕,一早起来,发现交叉编译器被glibc 2.3.6废掉了……