1.yum和apt-get的源码区别详解
2.C++ å¦ä½å è½½libï¼
yum和apt-get的区别详解
yum和apt-get的区别一般来说著名的linux系统基本上分两大类:
1.RedHat系列:Redhat、Centos、卸载Fedora等
2.Debian系列:Debian、源码Ubuntu等
RedHat 系列
1 常见的卸载安装包格式 rpm包,安装rpm包的命令是rpm -参数
2 包管理工具 yum
3 支持tar包
Debian系列
1 常见的安装包格式 deb包,安装deb包的命令是dpkg -参数
2 包管理工具 apt-get
3 支持tar包
tar 只是一种压缩文件格式,所以,源码它只是卸载控制端源码把文件压缩打包而已。
rpm 相当于windows中的源码安装文件,它会自动处理软件包之间的卸载依赖关系。
优缺点来说,源码rpm一般都是卸载预先编译好的文件,它可能已经绑定到某种CPU或者发行版上面了。源码
tar一般包括编译脚本,卸载你可以在你的源码环境下编译,所以具有通用性。卸载
如果你的源码源码电磁科技包不想开放源代码,你可以制作成rpm,如果开源,用tar更方便了。
tar一般都是源码打包的软件,需要自己解包,然后进行安装三部曲,./configure,狂奔指标源码 make, make install. 来安装软件。
rpm是redhat公司的一种软件包管理机制,直接通过rpm命令进行安装删除等操作,最大的优点是自己内部自动处理了各种软件包可能的依赖关系。
-------------------------------- *.rpm形式的二进制软件包[centos]
安装:rpm -ivh *.rpm
卸载:rpm -e packgename
rpm -q nginx 查看是否已经安装
升级:rpm -Uvh xxx
查询:
查询所有安装的包: rpm -qa
查询某个包:rpm -qa | grep xxx
rpm -qi xxx
查询软件的安装路径:rpm -ql xxx
rpm -qc xxx
查询某个文件是那个rpm包产生:rpm -qf /etc/yum.conf
rpm -qpi xxx
rpm -qa|grep php 查看已安装的RMP包
安装:rpm -ivh xxx
移除:rpm -e xxx
升级:rpm -Uvh xxx
查询:
查询所有安装的包: rpm -qa
查询某个包:rpm -qa | grep xxx
rpm -qi xxx
查询软件的安装路径:rpm -ql xxx
rpm -qc xxx
查询某个文件是那个rpm包产生:rpm -qf /etc/yum.conf
rpm -qpi xxx
-------------------------------- src.rpm 源代码分发软件包的安装与卸载
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,unity漫游源码适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。
1、*.src.rpm形式的源代码软件包
安装:rpm -rebuild *.src.rpm
cd /usr/src/dist/RPMS
rpm -ivh *.rpm
卸载:rpm -e packgename
说明:rpm rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包,然后再安装该二进制包即可。packgename如前所述。神量源码
--------------------------------dpkgubuntu
dpkg -l | grep 'php' 使用dpkg -l 来查看已经安装了的软件
dpkg 是Debian[待宾] Package 的简写。为 Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux 发行版都使用 dpkg,例如 Ubuntu、Knoppix 等。
以下是一些 Dpkg 的普通用法:
1、dpkg -i package.deb
安装一个 Debian 软件包,如你手动下载的文件。
2、dpkg -c package.deb
列出 package.deb 的内容。
3、dpkg -I package.deb
从 package.deb 中提取包裹信息。
4、dpkg -r package
移除一个已安装的包裹。
5、dpkg -P package
完全清除一个已安装的包裹。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。
6、dpkg -L package
列出 package 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。
7、dpkg -s package
显示已安装包裹的信息。同时请看 apt-cache 显示 Debian 存档中的包裹信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包裹信息。
8、dpkg-reconfigure package
重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面)。
-------------------------------- 使用yum和apt-get。软件管理方法的升级.
yum的配置文件是/etc/yum.conf
1. 我们来先讲Redhat的yum 这种高级的包管理.
yum install gcc [centos]
更新:yum update
安装:yum install xxx
移除:yum remove xxx
清除已经安装过的档案(/var/cache/yum/):yum clean all
搜寻:yum search xxx
列出所有档案:yum list
查询档案讯息:yum info xxx
#sudo -s
#LANG=C
#yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel
用YUM安装软件包
yum -y package_name
命令:yum install package_name
用YUM删除软件包
命令:yum remove package_name
yum -y remove ment (lib,"*.lib")ï¼è¿ç§æ¹æ³ä¼ç¹æ¯å¯ä»¥å©ç¨æ¡ä»¶é¢ç¼è¯æ令é¾æ¥ä¸åçæ¬çLIBæ件ãå 为ï¼å¨Debugæ¹å¼ä¸ï¼äº§ççLIBæ件æ¯Debugçæ¬ï¼å¦Regd.libï¼å¨Releaseæ¹å¼ä¸ï¼äº§ççLIBæ件æ¯Releaseçæ¬ï¼å¦Regr.libãç¶åå¨é¦å è¦ä½¿ç¨è¯¥å½æ°çå°æ¹å ä¸è¯¥LIBç头æ件ï¼å¦#include "..\lib.h"å³å¯ï¼æ²¡æ头æ件å½ç¶å°±ä¸ç¨äºï¼ã
å½åºç¨ç¨åºå¯¹DLLçLIBæ件å è½½åï¼è¿éè¦æDLL对åºç头æ件ï¼*.hï¼å å«å°å ¶ä¸ï¼å¨è¿ä¸ªå¤´æ件ä¸ç»åºäºDLLä¸å®ä¹çå½æ°ååï¼ç¶å声æ
äºï¼ æ¾å¼çè¿è¡æ¶é¾æ¥ ,(æç¨çæ¯æ¤æ¹æ³) éå¼é¾æ¥è½ç¶å®ç°è¾ç®åï¼ä½é¤äºå¿ é¡»ç*.dllæ件å¤è¿éè¦DLLç*.hæ件å*.libæ件ï¼å¨é£äºåªæä¾*.dllæ件çåºåå°±æ æ³ä½¿ç¨ï¼èåªè½éç¨æ¾å¼é¾æ¥çæ¹å¼ãè¿ç§æ¹å¼éè¿è°ç¨APIå½æ°æ¥å®æ对DLLçå è½½ä¸å¸è½½ï¼è½æ´å ææå°ä½¿ç¨å åï¼å¨ç¼å大ååºç¨ç¨åºæ¶å¾å¾éç¨æ¤æ¹å¼ãè¿ç§æ¹æ³ç¼ç¨å ·ä½å®ç°æ¥éª¤å¦ä¸ï¼ â 使ç¨Windows APIå½æ°Load Libraryæè MFCæä¾çAfxLoadLibraryå°DLL模åæ åå°è¿ç¨çå å空é´ï¼å¯¹DLL模åè¿è¡å¨æå è½½ã â¡ä½¿ç¨GetProcAddresså½æ°å¾å°è¦è°ç¨DLLä¸çå½æ°çæéã â¢ä¸ç¨DLLæ¶ï¼ç¨Free Libraryå½æ°æè AfxFreeLibraryå½æ°ä»è¿ç¨çå°å空é´æ¾å¼å¸è½½DLLã ä¾:å¨åºç¨ç¨åºä¸è°ç¨dllæ件
ââå¨åºç¨ç¨åºä¸è¦é¦å è£ å ¥dllåæè½è°ç¨å¯¼åºè¡¨ä¸çå½æ°,ä¾å¦ç¨mfc
å建åºäºå¯¹è¯æ¡çå·¥ç¨test,并å¨å¯¹è¯æ¡ä¸æ¾ç½®"load"æé®,å æ·»å è£ è½½ä»£ç ã 1.é¦å å¨testdlg.cppçé¦é¨æ·»å åé设置代ç :
//è®¾ç½®å ¨å±åéglibsampleç¨äºåå¨dllå¥æ
HINSTANCE glibsample=null; //å¦æå®ä¹æHANDLEç±»å,ååºé
//第äºä¸ªåéshowmeæ¯æådll åºä¸showme()å½æ°çæé
typedef int(* Showme)(void);
Showme showme;
2.å©ç¨classwizard为"load"æé®æ·»å è£ è½½dllç代ç
void ctestdlg::onloadbutton()
{
//è¦æ·»å ç代ç å¦ä¸
if(glibsample!=NULL)
{
AfxMessageBox("the sample.dll has already been load.");
return;
}
//è£ è½½sample.dll,æªå è·¯å¾,å°å¨ä¸ä¸ªé»è®¤è·¯å¾ä¸å¯»æ¾ (1)windowsçç³»ç»ç®å½:\windows\system;
//(2)dosä¸pathææåºçä»»ä½ç®å½;
//(3)ç¨åºæå¨çç®å½;
glibsample=Loadlibrary("sample.dll");
//è¿ådllä¸showme()å½æ°çå°å
showme=(Showme)GetProcAddress(glibsample,"showme");