车载linux软件 车载linux装安卓软件
摘要:Linux操作系统怎么样安装软件呢? 源代码包的安装 gzip -d apache_1 3 20 ta gz (解压) ta xvf apache_1 3 20 ta (解包) cd apache_1...
发布日期:2021-04-09Linux操作系统怎么样安装软件呢?
源代码包的安装 gzip -d apache_1.3.20.ta.gz (解压) ta xvf apache_1.3.20.ta (解包) cd apache_1.3.20 。
configue (配置) ——。
configue ——help(查看configue选项) make (编译) make install (安装) make clean (卸载) 注:典型的源代码包可以这样安装,但不都是这样,如wemin 要执行其目录下。
setup.sh进入交互式配置安装 卸载用uninstall程序 具体如果不清楚看要安装的包下的README文件 2、RPM包的安装 RPM软件包的一个例子: foo-1.0-1.i386.pm 其中包括软件包的名称(foo),版本号(1.0),发行号 (1),和硬件平台(i386)。
Linux应用程序组成有哪些呢?
1、 普通执行程序文件,保存在“/usr/bin”目录中 2、 服务器执行程序文件和管理程序文件,保存在“/usr/sbin”目录中 3、应用程序配置文件,保存在“/etc”目录下 4、应用程序文档文件,保存在“/usr/share/doc/”目录下 5、应用程序物册页文件,保存在“/usr/share/man”目录下
LVS软件实现Linux集群是什么
cluste可以将多台计算机连接起来协同运作以对外提供各种服务,比如Apache、FTP、 Mail等。
用LVS来架设一组cluste 在Linux上最常见的、也可能是运用最广泛的cluste方案就是LVS(Linux VitualSeve),很高兴LVS也是一个中国人创建和开发的开放源码项目。
LVS自1998年开始,发展到现在已经是一个比较成熟的技术项目了。
有许多比较著名网站和组织都在使用LVS架设的cluste,比如:linux.com"www.linux.com、soucefoge.net、www.eal.com等。
下面就开始介绍一下,笔者是如何利用LVS来架设一组cluste来对外提供Apache和FTP服务的。
安装操作系统 笔者选用的是Red Hat 9.0作为些cluste的diecto机器和所有eal seve机器的操作系统。
RH的安装过程从略,笔者根据实际需要,只安装了少数的包。
对于成批安装Linux,建议试试Kickstat来进入批理安装。
编译支持LVS的内核 LVS对Linux的kenel进行了修改和增加,所以要重新编译 linux kenel。
我们先从http:www.linuxvitualseve.og下载到LVS的内核补丁,对原有内核源代码进行更新,然后重新编译Linux的kenel。
下载LVS的内核补丁时要注意补丁版本要和kenel版本相一致,对于RH9.0,它的Linux核心版本是2.4.20,所以对应内核补丁应该是http:www.linuxvitualseve.ogsoftwaekenel-2.4linux-2.4.20-ipvs-1.0.9.patch.gz 另外还有一个补丁是用来解决某些情况下ARP协议不能正常工作问题的,从http:www.ssi.g~jahidden-2.4.20pe10-1.diff下载。
把上面下载的两个补丁复制到ussc目录下,然后执行以下命令: cd ussc gzip -cd linux-2.4.20-ipvs-1.0.9.patch.gz cd ussclinux patch -p1 vitual seve suppot (EXPERIMENTAL) IP vitual seve deugging 完成 丢弃
硬件嵌入式Linux和软件嵌入式Linux的区别
说通俗点,你的手机、MP3、车载GPS等等都是硬件嵌入式,而在你手机中使用的如电话本、便签、播放器等等功能都属于软件的嵌入式。
以下是嵌入式系统的特点:(1)面向特定应用的特点。
嵌入式系统与通用型系统的最大区别就在于嵌入式系统大 多工作在为特定用户群设计的系统中,因此它通常都具有低功耗、体积小、集成度高等特点, 并且可以满足不用应用的特定需求。
(2 )嵌入式系统的硬件和软件都必须进行高效地设计,量体裁衣、去除冗余,力争在 同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
(3)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应 用相结合后的产物。
这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创 新的知识集成系统,从事嵌入式系统开发的人才也必须是复合型人才。
(4 )为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片 或单片机本身中,而不是存储于磁盘中。
(5)嵌入式开发的软件代码尤其要求高质量、高可靠性,由于嵌入式设备所处的环境 往往是无人职守或条件恶劣的情况下,因此,其代码必须有更高的要求。
(6)嵌入式系统本身不具备二次开发能力,即设计完成后用户通常不能对其中的程序 功能进行修改,必须有一套开发工具和环境才能进行再次开发。
望采纳!
应用程序在Linux上的执行过程是什么
1.父进程的行为: 复制,等待 执行应用程序的方式有很多,从shell中执行是一种常见的情况。
交互式shell是一个进程(所有的进程都由pid号为1的init进程fork得到,关于这个话题涉及到Linux启动和初始化,以及idle进程等,有空再说),当在用户在shell中敲入。
/test执行程序时,shell先fork()出一个子进程(这也是很多文章中说的子shell),并且wait()这个子进程结束,所以当test执行结束后,又回到了shell等待用户输入(如果创建的是所谓的后台进程,shell则不会等待子进程结束,而直接继续往下执行)。
所以shell进程的主要工作是复制一个新的进程,并等待它的结束。
2.子进程的行为: "执行"应用程序 2.1 execve() 另一方面,在子进程中会调用execve()加载test并开始执行。
这是test被执行的关键,下面我们详细分析一下。
execve()是操作系统提供的非常重要的一个系统调用,在很多文章中被称为exec()系统调用(注意和shell内部exec命令不一样),其实在Linux中并没有exec()这个系统调用,exec只是用来描述一组函数,它们都以exec开头,分别是: #include int execl(const char *path, const char *arg, ……); int execlp(const char *file, const char *arg, ……); int execle(const char *path, const char *arg, ……, char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); 这几个都是都是libc中经过包装的的库函数,最后通过系统调用execve()实现(#define __NR_evecve 11,编号11的系统调用)。
exec函数的作用是在当前进程里执行可执行文件,也就是根据指定的文件名找到可执行文件,用它来取代当前进程的内容,并且这个取代是不可逆的,即被替换掉的内容不再保存,当可执行文件结束,整个进程也随之僵死。
因为当前进程的代码段,数据段和堆栈等都已经被新的内容取代,所以exec函数族的函数执行成功后不会返回,失败是返回-1.可执行文件既可以是二进制文件,也可以是可执行的脚本文件,两者在加载时略有差别,这里主要分析二进制文件的运行。
2.2 do_execve() 在用户态下调用execve(),引发系统中断后,在内核态执行的相应函数是do_sys_execve(),而do_sys_execve()会调用do_execve()函数。
do_execve()首先会读入可执行文件,如果可执行文件不存在,会报错。
然后对可执行文件的权限进行检查。
如果文件不是当前用户是可执行的,则execve()会返回-1,报permission denied的错误。
否则继续读入运行可执行文件时所需的信息(见struct linux_binprm)。
2.3 search_binary_handler() 接着系统调用search_binary_handler(),根据可执行文件的类型(如shell,a.out,ELF等),查找到相应的处理函数(系统为每种文件类型创建了一个struct linux_binfmt,并把其串在一个链表上,执行时遍历这个链表,找到相应类型的结构。
如果要自己定义一种可执行文件格式,也需要实现这么一个handler)。
然后执行相应的load_binary()函数开始加载可执行文件。
2.4 load_elf_binary() 加载elf类型文件的handler是load_elf_binary(),它先读入ELF文件的头部,根据ELF文件的头部信息读入各种数据(header information)。
再次扫描程序段描述表,找到类型为PT_LOAD的段,将其映射(elf_map())到内存的固定地址上。
如果没有动态链接器的描述段,把返回的入口地址设置成应用程序入口。
完成这个功能的是start_thread(),start_thread()并不启动一个线程,而只是用来修改了pt_regs中保存的PC等寄存器的值,使其指向加载的应用程序的入口。
这样当内核操作结束,返回用户态的时候,接下来执行的就是应用程序了。
2.5 load_elf_interp() 如果应用程序中使用了动态链接库,就没有那么简单了,内核除了加载指定的可执行文件,还要把控制权交给动态连接器(program interpreter,ld.so in linux)以处理动态链接的程序。
内核搜寻段表,找到标记为PT_INTERP的段中所对应的动态连接器的名称,并使用load_elf_interp()加载其映像,并把返回的入口地址设置成load_elf_interp()的返回值,即动态链接器入口。
当execve退出的时候动态链接器接着运行。
动态连接器检查应用程序对共享连接库的依赖性,并在需要时对其进行加载,对程序的外部引用进行重定位。
然后动态连接器把控制权交给应用程序,从ELF文件头部中定义的程序进入点开始执行。
(比如test.c中使用了userlib.so中函数foo(),在编译的时候这个信息被放进了test这个ELF文件中,相应的语句也变成了call fakefoo()。
当加载test的时候,知道foo()是一个外部调用,于是求助于动态链接器,加载userlib.so,解析foo()函数地址,然后让fakefoo()重定向到foo(),这样call foo()就成功了。
) 简短的说,整个在shell中键入。
/test执行应用程序的过程为:当前shell进程fork出一个子进程(子shell),子进程使用execve来脱离和父进程的关系,加载test文件(ELF格式)到内存中。
如果test使用了动态链接库,就需要加载动态链接器(或者叫程序...
各大发行版Linux软件包管理速查表是什么
使用 Linux 系统总是免不了要接触包管理工具。
比如,DeianUuntu 的 apt、openSUSE 的 zypp、Fedoa 的 yum、Mandiva 的 upmi、Slackwae 的 slackpkg、Achlinux 的 pacman、Gentoo 的 emege、Foesight 的 conay、Padus 的 pisi,等等。
DistoWatch 针对上述包管理器的主要用法进行了总结,对各位 Linux 用户来说具有很好的参考作用。
这个总结还是有一点不足,有空给大家整理一个更全面的版本。
任务aptDeian, UuntuzyppopenSUSEyumFedoa, CentOS安装包apt-get install zyppe install yum install 移除包apt-get emove zyppeemove yum ease 更新包列表apt-get updatezyppeefeshyum check-update更新系统apt-get upgadezyppe updateyum update列出源cat etcaptsouces.listzyppeeposyum epolist添加源(edit etcaptsouces.list)zyppe addepo (add to etcyum.epos.d)移除源(edit etcaptsouces.list)zyppeemoveepo (emove fom etcyum.epos.d)搜索包apt-cache seach zyppe seach yum seach 列出已安装的包dpkg -lpm -qapm -qa任务upmiMandivaslackpkgSlackwaepacmanAch安装包upmi slackpkg install pacman -S 移除包upme slackpkg emove pacman -R 更新包列表upmi.update -aslackpkg updatepacman -Sy更新系统upmi --auto-selectslackpkg upgade-allpacman -Su列出源upmq --list-mediacat etcslackpkgmioscat etcpacman.conf添加源upmi.addmedia (edit etcslackpkgmios)(edit etcpacman.conf)移除源upmi.emovemedia (edit etcslackpkgmios)(edit etcpacman.conf)搜索包upmf --pacman -Qs 列出已安装的包pm -qals valogpackagespacman -Qii任务conayPatd, FoesightpisiPadusemege Gentoo安装包conay update pisi install emege 移除包conay ease pisi emove emege -C 更新包列表pisi update-epoemege --sync | layman -S [fo added epositoies]更新系统conay updateallpisi upgadeemege -NuDa wold列出源pisi list-epolayman -L添加源pisi add-epo layman -a移除源pisi emove-epo layman -d 搜索包conay quey pisi seach emege --seach列出已安装的包conay queypisi list-installedcat valipotage | moe