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。)

如何选择合适的Linux系统进行桌面程序开发?的更多相关文章

  1. linux系统--C语言程序开发的基本步骤(包含gcc的基本步骤)

    1.使用vi或者vim编写程序文件 2.使用gcc把所有的源文件翻译成计算机认识的格式(编译) 3.使用./a.out作为命令执行得到的可执行文件 gcc编译器的工作步骤: 1.处理所有的预处理指令 ...

  2. 在Linux系统如何让程序开机时自动启动

    在Linux系统如何让程序开机时自动启动      核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”--& ...

  3. 用python进行桌面程序开发

    Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...

  4. linux 系统shell运行程序不退出

    如果通过ssh远程连接到linux系统终端,在shell下执行程序.假如程序名称为app,且程序本身会一直执行不退出,程序执行需要参数文件paramfile. 当我们用 ./app paramfile ...

  5. 如何使Linux系统上的程序开机后自动运行 (转)

    Linux有自己一套完整的启动体系,抓住了Linux启动的脉络,Linux的启动过程将不再神秘. 阅读之前建议先看一下附图. 本文中假设inittab中设置的init tree为: /etc/rc.d ...

  6. LInux系统的C语言开发工具笔记

    常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.对于初学者,选择一款使用广泛.上手容易的开发工具才是王道.在Windows 上很多从事C和C++开发的人员都选择VS作为开 ...

  7. [Flutter] Windows桌面程序开发

    在今年5月的谷歌I/O 2019大会时, 谷歌就宣布了flutter已经支持全平台开发, 包括 android, ios, mac, linux, windows, web 等 . Flutter桌面 ...

  8. 选择合适的Linux版本

    以下纯属个人想法:欢迎指正 1.Linux桌面系统,首选Ubuntu.当然Ubuntu也有服务器版本,不建议使用 2.服务端的Linux稳定的服务器系统,在企业中从事运维工作Redhat或者CentO ...

  9. Linux系统下安装Angular2开发环境(Ubuntu16.0和deepin)

    说明下,以下过程都是在ubuntu16.0系统下,win系统环境下的安装过程更简单,基本上可以仿效此环境来,除了不用配置系统命令(win下自动可以),node安装是exe程序,一键安装.另外,这里面像 ...

随机推荐

  1. UI-2-UILabel&UIImageView-补充

    课程要点: 控件之间的继承关系. UILabel UIImageView 利用UIImageView实现帧动画 补充 试图之间的继承关系 昨天学习UIView的时候,了解到UIView里面有以下几个常 ...

  2. active mq 配置

    <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame s ...

  3. hdu5800 To My Girlfriend dp 需要比较扎实的dp基础。

    To My Girlfriend Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟

    /** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...

  5. 2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数

    /** 题目:Color 链接:https://oj.ejq.me/problem/23 题意:给定一颗树,将树上的点最多染成m种颜色,有些节点不可以染成某些颜色.相邻节点颜色不同.求染色方法数. 思 ...

  6. JPA(Java Persistence API)Java持久化API-介绍

    JPA全称: Java Persistence API JPA的宗旨是为POJO提供持久化标准规范,能够脱离容器独立运行,很方便开发和测试.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关 ...

  7. linux系统启动过程具体解释-开机加电后发生了什么 --linux内核剖析(零)

    本文參考了例如以下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详细解释linux系统的启动过程 ...

  8. CImg的使用,入门

    CImg的使用: const char *imageIN="image.jpg" const char *imageOUT="imgeout.jpg" CImg ...

  9. Java的版本历史与特性

    一个比较流行的问题是,“Java下一个版本会有什么特性呢?” .这是否是个好问题却有待商榷.在下面的内容里,我总结了至今为止的Java主要发行版中各自引入的新特性,这样做的目的是为了突出各个新特性是在 ...

  10. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...