一次系统事故及其后续处理经验.
重点包括64位机器上编译,执行32位程序所遇到的问题。
由于不小心删除了正在运行的内核镜像,哦?真的能删除吗? 嗯,不管怎么说,是强制删除
了正在运行的内核镜像image, extra,及其header文件, 虽然有的报删除失败, 但是重启是无法启动了.
当时的loader用的是lilo, 恢复了半天修复不了,没办法只能重装系统了. 重装系统挺不愿意格式化根目录的,
但如此安装下来竟然还是有问题,
只好安装时把根目录格式化了,这意味这我必须要重新安装一些系统工具,系统文件等.
但是/home目录是一个独立分区,我的工作全在此处, 这里千万不能选格式化.
这样装完后, 自己的工作得以保留, 甚兴!否则我就欲哭无泪了!!!
下面只需要把系统恢复到好用就可以了.这才是本贴的关键. 先来说说恢复系统的要点吧.
1. 安装中文支持和中文输入法. 中国人没有中文是不行的.
在配置->Language Support 中, 和 Text Entry 项中,点击顶部条的icon也能访问到Text Entry 设置, 我选择了SunPinYin 输入法, 它默认的chinese pinyin根本就是没法用的.
2. firefox 总要能听声音,能播放视频吧, 你需要安装Flash 插件, 嗯!我是ubuntu 选择
deb包firefox给我打开无穷多网页,没法下载,是它的bug吗, 我只好选择linux 下载.tar.gz
解开后按照它的readme copy 到/usr 目录下一堆文件, 关键是libflashplayer.so放到哪个plugin 目录下
应该是下面这个.
/usr/lib/firefox/browser/plugins/libflashplayer.so
不过我往下面这个也放了一个
/usr/lib/firefox-addons/plugins/libflashplayer.so
反正它能工作了,可以播放视频, 百度翻译也能发声了.
3.安装非标准软件.
用apt-get 安装的就不说了, 还有bcompare 软件,好用的文件比较工具, 到官网去下载吧.按说明安装.
虚拟机vmware, 离不了它, windows软件靠它运行呢. 我靠,怎么官网下载的速率这么慢,网络下载才
10几K速度,要两三个小时才能下来,无法忍受啊, 还好我有axel, linux下的迅雷,秒杀之,
只要怎样才能突破30天使用限制, 自己想办法吧,我这就不说了.有钱就支持一下正版!
4. 网络设置, eth0, 由于它不能连接外网,只用它调试嵌入式系统,所以对其IP设置时,
在其routes 对话框中,要勾选"Use this connection only for resource on its network"
复选框, 否则它会干扰到你上网!
5.其它系统环境也就差不多了,邮件还是thundbir, 打开看,原来的邮件还在,甚好!
6.sudo apt-get 安装我心爱的vim, 编辑个文件,我靠,这不是我所需要的,控制台模式不支持剪切板,好不方便啊
而起它也不支持gdb,做不了gdb 的前端, 是我这个搞软件的所不能接受的. 还好我的家目录下还有配置好的源文件,
sudo make install 一下, 我得心应手的vim 又回来了.
如此,系统就基本恢复到一个较好的环境了.,
后面就是软件开发的问题了,也要恢复到一个健康的工作环境,
以我的一个ubuntu 64bit环境编译32位执行文件的工程为例了.
以下都是编译及运行环境问题, 如果遇到相似问题, 请注意参考!
A .运行问题及解决办法.
1. ./code 不能运行找不到文件问题
解决方法:
sudo apt-get install libc6:i386
2. 找不到32bit libz
./code: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解决方法:
sudo apt-get install lib32z1
3. 找不到32bit libcrypto
./code 关于缺少 libcrypto.so 的问题.
解决方法:
sudo apt-get install libssl1.0.0:i386
B. 编译问题:
1. Makefile 维护生成工具.
目前编译环境使用了Qt-4.8.6,
sudo apt-get install qt4-dev-tools 会有一堆文件会安装.
Makefile 根据我们环境是做过修改的!!!, 如果要修改,请保留原始文件以备参考
2. 编译工具
sudo apt-get install g++
问题2.1: 缺少头文件 sys/cdefs.h
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: 没有那个文件或目录 # include <sys/cdefs.h>
解决办法:
sudo apt-get install gcc-4.8-multilib g++-4.8-multilib
sudo apt-get install lib32readline-gplv2-dev
问题2.2: 缺少 zlib.h
initex.cpp:12:18: fatal error: zlib.h: No such file or directory
解决办法:
sudo apt-get install zlib1g-dev
问题2.3: 缺少 zconf.h
fatal error: zconf.h: No such file or directory
是zconf.h 挪动了位置,拷贝到它访问的目录下
解决办法:
sudo cp /usr/include/x86_64-linux-gnu/zconf.h /usr/include
问题2.4: 缺少 pkcs7.h
scan.h:4:27: fatal error: openssl/pkcs7.h: No such file or directory
解决办法: 我下载了, 附在附件中, 好像已经配置过了,直接make, 再sudo make install 就可以了.
openssl-1.0.1u 的源代码, 编译和安装一下
这里我是下载开源源码找到其对应头文件,这确实是比较麻烦一点的事了.
问题: 缺少libz库及缺少libcrypto库
/usr/bin/ld: cannot find -lz
/usr/bin/ld: cannot find -lcrypto
解决办法: 为已安装的32位库建立软连接
进入/usr/lib32 目录
sudo ln -s libz.so.1.2.8 libz.so
进入 /lib/i386-linux-gnu 目录
sudo ln -s libcrypto.so.1.0.0 libcrypto.so
紧急处理昨天重装系统带来的震荡, 算是重新开始了,
如此能编译,也能运行了,系统恢复基本正常了, 其它忽略...
后来,我找到了解决办法,当头文件或者库文件找不到时,我们应该安装哪个包呢?
ubuntu 下可以用apt-file 命令来解决问题。sudo apt-file search 'xxxx'