32 or 64 ?

  • 众所周知,64位的Windows系统可以近乎完美地运行32位的应用程序,微软出于商业考虑做了这样一个兼容层。而Linux系统则划分的很清楚,默认情况下64位的Linux系统无法运行32位的应用程序。但是Linux又是一个高度可定制的系统,通过安装一些库或者其它的配置方法可以让64位的系统运行32位的应用程序。

  • 现实情况是针对于Linux系统开发的应用程序大都提供了两个版本,32位的和64位的。

  • 可以选择针对32位和64位系统分别开发程序(两份代码),也可以选择开发一份代码,让它兼容于32位和64位系统。如果只维护一份代码,则只需要选定一个系统(32位或者64位)作为开发时用的系统,选定两个系统作为编译时用的系统(开发系统算一个,如果开发是32位就再选一个64位的,如果开发是64位的就再选一个32位的)。

哪个发行版?

  • Linux系统是一大类系统的统称,光选32和64还不够,你还得从所有这些32和64位的系统中选一个称心如意的发行版

  • 根据 DistroWatch 的统计,使用比较多的发行版有 Mint(基于Ubuntu的发行版)、Ubuntu(基于Debian的发行版)、Debian(老大哥级别的发行版)、openSUSE(与SUSE相关)、Fedora(redhat桌面版)、CentOS(RHEL 社区版)。

  • 这些发行版都用一个内核 Linux Kernel ,区别在于每个发行版所搭载的软件包图形界面。软件包主要有deb包和rpm包两种,Mint、Ubuntu、Debian使用deb包,对应的包管理工具为dpkg;openSUSE、Fedora、CentOS使用rpm包,对应的包管理工具为rpm。图形界面则有GNOMEKDEXfce等。

  • 软件是要给用户使用的,所以应当选择一个大家常用的发行版,并且将编译好的软件分别制作成 deb 包和 rpm 包,供用户使用。鉴于 Ubuntu 发展时间较长且用户广泛,故推荐此发行版。

高版本 or 低版本?

  • 选定了发行版还是不够,还要从这个发行版中选出具体的版本号,版本号越高代表系统越新。比如Ubuntu 10.04是10年4月份释出的版本,Ubuntu 12.04是12年4月份释出的版本,Ubuntu 12.10是12年10月份释出的版本。(对于Ubuntu系统,4月份释出的版本得到支持的时间较长,而10月份释出的版本受支持时间较短。)

  • 通常来讲,在低版本系统上编译的软件拿到高版本系统上运行是没有问题的。反之,在高版本系统编译而在低版本系统运行,则结果不确定,详情请见Linux binary compatibility

  • 保险起见,还是应当选择低版本的发行版作为开发用系统。具体版本有多低还要看用户需求,现在(2015-1-13)推荐 Ubuntu 10.04,随着时间的推移,可能会陆续转到 Ubuntu 11.04, Ubuntu 12.04上。

查看已安装的系统

  • uname -m:输出系统架构,i686表示32位的系统,x86_64表示64位的系统。

  • uname -r:输出Linux内核版本,如 Ubuntu 12.04 使用的Linux内核:3.2.0-57-generic-pae,Ubuntu 10.04 使用的Linux内核:2.6.32-24-generic

  • lsb_release -d:输出此发行版的描述信息,如:Description: Ubuntu 12.04.3 LTSDescription: Ubuntu 10.04.1 LTS

总结

补充

  • 要想安装 64 位的系统,首先要确保 cpu 支持 64 位。

  • grep -o -w 'lm' /proc/cpuinfo:如果输出 lm ,表示 cpu 支持 64 位。

  • (lm 表示 Long Mode,另外还有 Protected Mode 表示 32 位的 cpu,Real Mode 表示 16 位的 cpu。)

最新文章

  1. WP8解析JSON格式(使用Newtonsoft.Json包)
  2. Beta阶段第二次Scrum Meeting
  3. tp中session用来做权限方法 (缓解mysql压力)
  4. thinkphp系统常量与自定义常量
  5. 说说你所熟知的MSSQL中的substring函数
  6. RAC 数据库的启动与关闭
  7. android中edittext被键盘挡住问题
  8. javascript文档节点
  9. BZOJ_3210_花神的浇花集会_切比雪夫距离
  10. Python基础:第一个Python程序(2)
  11. 试试Markdown哈
  12. 用好lua+unity,让性能飞起来——lua与c#交互篇
  13. 【leetcode-71】 简化路径
  14. 使用服务器参数文件(SPFILE)管理初始化参数
  15. Eclipse 安装Maven插件m2eclipse
  16. 学习笔记之Fluent Python
  17. 二:Recovery models(恢复模式)
  18. hibernate懒加载
  19. WPF如何给窗口Window增加阴影效果
  20. 阿里云SSL证书tomcat配置

热门文章

  1. Linux 文件管理(C语言库函数一)
  2. YII安装步骤(windows)
  3. Eclipse 浏览(Navigate)菜单
  4. python 爬虫2 Urllib库的高级用法
  5. javascript对象定义
  6. 新MBP使用git命令时启用xcode的终端log
  7. 2213 Problem J
  8. mysql 存储二进制数据
  9. 1686 第K大区间(尺取+二分)
  10. java 对list 排序