Windows 程序移植到Linux平台的一波N折
本人前端时间写了个HTML文件分析器,windows平台上的VC6.0,使用标准C++。昨天接到指令,应要求要发布一个Linux版本的,茫然啦,Linux下面的hello world都没有玩过,对linux下的C++程序仅仅限于听他们神吹过的GCC, G++, MAKEFILE什么的,其他一概不知。这就注定移植过程必然full of frustrating.
早上在如同涓涓溪流的网络中下了个600多M的Ubuntu ISO,装上虚拟机,安装Ubuntu,一切顺利,安装成功,重新启动,大汗.只有黑乎乎的命令行,没有图像界面儿。哎,原来装的是Ubuntu server 版。
重新睁大眼睛下载了个Ubuntu Destop Edition ubuntu-9.10-desktop-i386.iso,还是在官网上下的,还是目前最新版,安装到58%的时候出现Failed to copy file之类的话,反复尝试了几次还是不行。只得再次下载了ubuntu-8.04.3-desktop-i386.iso。还好,这次很顺利,很快的安装成功了。
ubuntu-8.04.3-desktop基本上是裸体,什么有用的软件都没有。恩。好像有GCC。但是想用GCC完成对HTML PARSER(用了stl)的编译是不得行的,必须要G++,以及相关库。在网上很容易查到“sudo apt-get install build-essential”之类的方法。我尝试了,不行,就提示写什么什么依赖什么的。又到官网上下了build-essential.deb,双击运行,死,还是说依赖什么什么东东没有,失败;沉住气,把依赖的××.deb下载下来,运行,xx.deb有依赖××.deb,...........,无语到了极点,怎么发现循环依赖呢!!!! 这个问题到现在还不清楚,哪个可以告诉我?请留言。
下午经论坛高人甲指点:
1.把盘放进光驱
2.$sudo apt-cdrom add
3.$sudo apt-get install build-essential
高人指点的招数还是有问题,后来又经高人乙指点
用 aptitude 替代 apt-get ,前者可以自动处理依赖异常并给出解决方案。及$3 sudo aptitude install build-essential。当当当,build-essential安装成功。
从CSDN上随便找了个makefile的模板,再简单的改了改,编译,成功。有几个worning:end file with new line什么什么的。
最后总结一下Linux(ubuntu)c++编译环境的搭建方法 or 过程:
1 下载个ubuntu Desktop版本的,server版的玩儿不惯。地址:http://releases.ubuntu.com/releases/8.04/ubuntu-8.04.3-desktop-i386.iso
2 在虚拟机vmware中安装。
3 执行一下操作:
a.把盘放进光驱
b.$sudo apt-cdrom add
c.$sudo aptitude install build-essential
在vmware
相关文档:
一般情况下,进程不能存取系统内核的,只有系统调用是一个例外,在intel结构的计算机中,是通过中断0x80实现的
进程可以可以跳转到内核中的位置是system_call。在此检查系统调用号,它告诉内核进程请求何种服务,然后查找系统调用表sys_call_table,找到希望调用的内核地址函数,调用此函数,然后返回。
&nbs ......
进程是系统中程序执行和资源分配的基本单位。每个进程都有自己的数据段,代码段和堆栈段,这就导致了进程在进行切换等操作起到了现场保护作用。但是为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程演化中出现了另外一个概念,这就是线程,也被人称为轻量级的进程。它是一个进程内的基本调度单 ......
在上一篇文章中对线程进行了简单的概述,它在系统中和编程的应用中,扮演的角色是不言而喻的。学习它、掌握它、吃透它是作为一个程序员的必须作为。在接下来的讲述中,所有线程的操作都是用户级的操作。在LINUX中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此他的移植性是非常好的。
& ......
在上一篇文章中,介绍了线程的创建和退出,以及相关函数的使用。其中pthread_create函数的第二个参数,是关于线程属性的设置,这也是今天所有讲述的。这些属性主要包括邦定属性、分离属性、堆栈地址、堆栈大小、优先级。其中系统默认的是非邦定、非分离、缺省1M的堆栈、与父进程同样级别的优先级。在pthread_create中 ......