当前位置:首页 » 编程软件 » 编译软件包

编译软件包

发布时间: 2024-05-09 05:13:46

Ⅰ 如何编译OpenWrt

准备工作
在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:
一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);
确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)
OpenWrt源代码副本
首先, 开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):
32位(x86)请执行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev

64位(x86_64)请执行下列命令(多装了哪些库或软件包呢?请您仔细看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386

参考 本列表中 所列的编译环境所需要软件包或库。
某些依赖的为库或软件包也许操作系统中已经安装过,此时apt-get会作出提示(提示您忽略或重新安装的),别紧张,放轻松些,编译Openwrt不会像编译DD-WRT那样难的(至少本人是体会到了编译DD-WRT的难)。
最后下载一份完整的 Openwrt 源码到编译环境中。关于Openwrt的源代码下载,途径有二,一是通过 svn ,一是通过 git,建议使用 svn ,因为Openwrt主要以 svn 来维护Openwrt系统的版本。另外,请注意Openwrt中不同的分支版本,一个是用得较多的开发快照,俗称 trunk,二是稳定版,俗称 backfire。

Ⅱ 如何定制安装linux软件

在Linux系统上定制安装软件主要有以下几个步骤:

1. 下载软件包:首先需要下载软件包,可以从官方网站或其他可信源获取。通常软件包都以.tar.gz或.tar.bz2的压缩敬悄轮格式提供。

2. 解压软件包:使用解压命令将软件包解压到指定的目录或文件夹中。例如,使用tar命令解压.tar.gz格式的软件包可以使用以下命令:tar -zxvf package.tar.gz。

3. 配置软件包:进入解压后的文件夹,使用./configure命令进行配置。该命令将检查系统环境,确认所有依赖项都已安装,并生成Makefile文件。

4. 编译软件包:使用make命令编译软件包。该命令将根据Makefile文件中的指示编译源代码运或,并生成可执行文件。

5. 安装软件包:使用make install命令将软件包安装到系统中。该命令将复制可执行文件和其他必要文件到指定的目录,例如/usr/local/bin。

6. 清理安装包:使用make clean命令清理编译过程中生成的中间文件和临时文件。

需要注意的是,定制安装Linux软件需要一定的Linux系统亮信基础知识和命令行操作经验。如果你不熟悉Linux系统,建议先学习相关知识再进行操作。同时,安装软件时应注意软件包的来源和版本,避免下载和安装不安全的软件包。

Ⅲ 如何在linux中安装gcc编译器

2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、java、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。

安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。

系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。

按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。

1. 下载

在GCC网站上(http://gcc.gnu.org/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。

2. 解压缩

根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):

% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -

新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。

在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。

3. 建立目标目录

目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。

例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):

% mkdir gcc-build
% cd gcc-build

以下的操作主要是在目标目录 ${objdir} 下进行。

4. 配置

配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。

配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):

% ${srcdir}/configure --prefix=${destdir} [其它选项]

例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则${destdir}就表示这个路径。

在我的机器上,我是这样配置的:

% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java

将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。

5. 编译

% make

这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。

6. 安装

执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):

% make install

至此,GCC 3.4.0安装过程就完成了。

6. 其它设置

GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

6.1 gcc、g++、gcj的设置

要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径:

% which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:

% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34

这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

6.2 库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。

例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:

setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH

7. 测试

用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。

8. 根据需要,可以删除或者保留${srcdir}和${objdir}目录。

Ⅳ CentOS绯荤粺涓嬭蒋浠跺寘镄勫埗浣沧柟娉曞拰杩囩▼

镐荤殑𨱍呭喌涓婰inux涓嬭蒋浠跺畨瑁呬富瑕佹湁涓夌嶆柟寮忥细
涓绉嶆槸婧愮爜瀹夎咃纴闇瑕佺敤鎴疯嚜宸辨坠锷ㄧ紪璇
鍙︿竴绉嶆槸RPM鍖(RedHat Linux Packet Manager),阃氲繃RPM锻戒护灏卞彲浠ュ疄鐜板畨瑁
杩樻湁涓绉崭负*.bin鏂囦欢锛屽畨瑁呮柟娉曚笌Windows涓嬬殑瀹夎呰繃绋嬬被浼
阃氩父𨱍呭喌涓婰inux 瀹夎呰蒋浠朵富瑕侀氲繃浠ヤ笅涓ょ嶆柟寮
鈶 鏂囦欢钖嶅舰濡倄xx.i386.rpm ,杞浠跺寘浠ヤ簩杩涘埗褰㈠纺鍙戝竷.
鈶 鏂囦欢钖嶅舰濡倄xx.tar.gz ,杞浠跺寘澶氢互婧愮爜镄勫舰寮忓彂甯.
Linux杞浠跺寘绠$悊鍙浠ュ垎涓轰笁绫伙细浜岃繘鍒跺寘镄勭$悊锛屾簮浠g爜鍖呯殑绠$悊锛岃剼链瀹夎
鍙﹀栧煎缑娉ㄦ剰镄勬槸鐩鍓嶅瓨鍦ㄥ悇绉峀inux镄勫彂琛岀増銮峰彇鍜屽畨瑁呰蒋浠剁殑鏂瑰纺涔熸湁寰埚氢緥濡
銆愩憆edhat/centos镄剏um瀹夎(链変笓闂ㄧ殑闀滃儚婧)
銆愩慤buntu/Fedora/Debian镄剆udo apt-get阃傜敤浜巇eb鍖呰繘琛岀$悊瀹夎
銆愩戜篃链夌殑杞浠舵槸阃氲繃鍒荤洏锷犲瘑镄勫舰寮忕劧钖庤繘琛屽畨瑁呯殑(渚嫔俢nyunwei)
銆愩戝湪绯荤粺杩愮淮绠$悊浜哄憳鏂归溃涔熸湁阃氲繃ssh銆丆/C++璇瑷鎴栬卲y镓ц岀殑涓浜涜蒋浠跺懡浠よ繘琛岃嚜锷ㄥ寲绠$悊镄勫簲鐢锛岃繖閲屽氨涓嶅仛璇︾粏浠嬬粛浜嗐
涓嬮溃链変竴寮犲浘鍙浠ユ竻鏅板湴琛ㄧずlinux杞浠跺簲鐢ㄧ殑鏋舵瀯鍏崇郴锛

   銆銆鍦↙inux钖锷ㄧ殑镞跺欍傞栧厛浼氩惎锷ㄥ唴镙(kernel)锛屽唴镙告槸涓娈佃$畻链虹▼搴忥纴杩欎釜绋嫔簭鐩存帴绠$悊绠$悊纭浠讹纴鍖呮嫭CPU銆佸唴瀛樼┖闂淬佺‖鐩樻帴鍙c佺绣缁沧帴鍙g瓑绛夈傛墍链夌殑璁$畻链烘搷浣滈兘瑕侀氲繃鍐呮牳浼犻掔粰纭浠躲傛垜浠鍙浠ョ湅鍒帮纴Linux鍒╃敤kernel瀹炵幇杞纭浠剁殑瀵硅瘽銆傞氲繃绯荤粺璋幂敤镄勮繖涓閲嶈佺殑鎺ュ彛锛孡inux灏嗕笂灞傜殑搴旂敤涓庝笅灞傜殑kernel瀹屽叏鍒嗙诲紑锛屼负绋嫔簭锻橀殣钘忎简搴曞眰镄勫嶆潅镐(鐩稿簲镄勶纴涔熸彁楂树简涓婂眰搴旂敤镄勫彲绉绘嶆)銆傚綋鎴戜滑鍦ㄥ崌绾kernel镄勬椂鍊欙纴涔熷彲浠ヤ缭鎸佺郴缁熻皟鐢ㄧ殑璇鍙ヤ笉鍙桡纴浠庤岃╀笂灞傚簲鐢ㄤ笉镒熷弹鍒颁笅灞傜殑鏀瑰彉銆傚簱鍑芥暟鍒╃敤绯荤粺璋幂敤鍒涢犲嚭妯″潡鍖栫殑锷熻兘锛岃宻hell鍒欐彁渚涗简涓涓鐢ㄦ埛鐣岄溃锛屽苟璁╂垜浠鍙浠ュ埄鐢╯hell镄勮娉旷紪鍐栾剼链锛屼互鏁村悎绋嫔簭銆傛湁浜呜繖浜涙濇兂鎴戜滑鍙浠ュ揩阃熷湴浜呜Вlinux镄勮蒋浠跺簲鐢ㄧ殑瀹夎呭拰宸ヤ綔铡熺悊锛屼篃锲犳や负浜嗘柟渚垮拰銮峰彇镟村氢紒涓氩簲鐢ㄦ垜浠闇瑕佸湪linux绯荤粺涓婂紑鍙戝苟涓旈氲繃婧愮爜缂栬疟镄勬柟寮忓埗浣滃悇绉嶈蒋浠跺寘浠庤屼负淇℃伅鍖栨椂浠f湇锷°
链鏂囦富瑕佷粙缁嶆簮镰佸畨瑁呬笌RPM鍖呯殑瀹夎
婧愮爜鍖呭拰鍟嗕笟杞浠跺寘镙规嵁钖勪釜鍏鍙告垨浣滆呯殑瀹为檯𨱍呭喌鍑哄彂(鍙浠ユ槸tar绛夋牸寮忕殑铡嬬缉鍖咃纴涔熷彲浠ユ槸bin镄勬簮绋嫔簭锛屽彲浠ユ槸宸茬粡缂栬疟濂戒简镄勭洿鎺ユ嬁𨱒ヨ繍琛岀殑鏂囦欢锛屼篃鍙浠ユ槸鍏夌洏铏氭嫙鍖栨枃浠剁瓑鍏朵粬浠嬭川𨱒ュ埗浣滃彂甯幂殑iso鏂囦欢绛)灏佽呮垚涓绉岖壒瀹氱殑镙煎纺鍙戝竷浠庤岃繘琛岀浉搴旂殑杞浠舵湇锷°傚叾瀹为氲繃yum鎴栬卪ake install锻戒护瀹夎呯殑杞浠跺湪绯荤粺閮戒细镊锷ㄧ敓鎴恟pm鍖(鍙鏄鍙傛暟鍜屽姛鑳芥ā鍧楀樊寮傚拰涓ヨ皑镄)
绠浠:
RPM(RedHat Package Manager,绾㈠附瀛愯蒋浠跺寘绠$悊鍣)鐢ㄤ簬杞浠跺寘镄勫畨瑁呫佹煡璇銆佸崌绾с佹牎楠屻佸嵏杞斤纴浠ュ强鐢熸垚.rpm镙煎纺镄勮蒋浠跺寘 RPM镄勪娇鐢ㄥ墠
鎸傝浇linux绯荤粺(centos4涓轰緥)镄勫畨瑁呭厜鐩,褰撶劧涔熷彲鍦ㄧ绣涓娄笅杞藉厤璐圭殑RPM鍖.
# mount/dev/cdrom ---鎸傝浇鍏夌洏
# cd/media/cdrom/CentOS/RPMS ---杩涘叆鍏夌洏涓璕PM鍖呯殑鐩褰(鍙浠ラ氲繃#mount锻戒护𨱒ユ煡鐪嫔厜鐩樼殑鎸傝浇镣逛竴鑸浼氩湪链钖庝竴琛屾樉绀)
# ls
涓銆佹簮镰佸寘瀹夎
1銆*.src.rpm褰㈠纺镄勬簮浠g爜杞浠跺寘
鐢ㄦ硶锛
瀹夎咃细 rpm 钬搑ebuild *.src.rpm
cd /usr/src/dist/RPMS
Rpm 钬搃vh *.rpm
鍗歌浇锛 rpm 钬揺 packagename
2銆.tar.gz锛*.tgz锛*.bz2褰㈠纺杞浠跺寘镄勫畨瑁
棣栧厛杩涜岃В铡,锻戒护濡备笅
tar zxvf *.tar.gz
tar xvfz *.tgz
tar xvfj *.tar.bz2
瑙e帇涔嫔悗杩涘叆瑙e帇鐩褰曪纴铹跺悗杩涜屼互涓嬫搷浣(涓鑸𨱍呭喌锛屽叿浣撶湅杞浠跺寘镄勬枃浠跺悕)
閰岖疆锛./configure
缂栬疟锛歮ake
瀹夎咃细make install
鍗歌浇锛歮ake uninstall
婧愮爜瀹夎呮湁涓瀹氱殑闅惧害锛屼笉钖岀殑杞浠跺彲鑳芥湁涓嶅悓镄勫畨瑁咃纴涓鑸鍦ㄨВ铡嬩箣钖庡簲璇ュ厛阒呰昏存槑鏂囨。锛屾寜镦ц存槑杩涜屽畨瑁咃纴涓婇溃璇寸殑鍙鏄涓鑸𨱍呭喌銆
浜屻丷PM鍖呭畨瑁
RPM瀹夎呭寘镙煎纺鏄鐢卢edhat鍏鍙告彁鍑虹殑锛屽ぇ澶х殑绠鍖栦简Linux涓嬭蒋浠剁殑瀹夎咃纴棣栧厛浠嬬粛涓涓嬮氱敤阃夐”銆
-v锛氭樉绀洪梼锷犱俊鎭
-vv锛氭樉绀鸿皟璇曚俊鎭
--root directory锛氲㏑PM浠directory浣滀负镙圭洰褰曪纴杩欐牱棰勫畨瑁呯▼搴忓拰钖庡畨瑁呯▼搴忛兘浼氩畨瑁呭埌杩欎釜鐩褰曚笅銆
1銆佸畨瑁咃细rpm 钬搃 file.rpm
Options:
h锛氩畨瑁呮椂杈揿嚭hash璁板彿
test锛氩彧瀵瑰畨瑁呰繘琛屾祴璇曪纴涓岖湡姝e畨瑁
--persent锛氢互锏惧垎姣斿舰寮忔樉绀哄畨瑁呰繘搴
--excludedocs锛氢笉瀹夎呰蒋浠跺寘涓镄勬枃妗
--replacepkgs锛氩己鍒堕吨鏂板畨瑁
--replacefiles锛氭浛鎹㈠睘浜庡叾瀹冭蒋浠跺寘镄勬枃浠
--force锛氩拷鐣ヨ蒋浠跺寘鍙婃枃妗e啿绐
--ignorearch锛氢笉镙¢獙杞浠跺寘缁撴瀯
--ignoreos锛氢笉妫镆ヨ蒋浠跺寘杩愯岀殑镎崭綔绯荤粺
--nodeps锛氢笉妫镆ヤ緷璧栨у叧绯
--noscripts锛氢笉杩愯岄勫畨瑁呭拰钖庡畨瑁呰剼链绋嫔簭
2銆佸垹闄ゃrpm 钬揺 pkgname
Option:
--test锛氩彧锅氩垹闄ゆ祴璇曪纴涓岖湡姝e垹闄
--noscripts锛氢笉杩愯岄勫畨瑁呭拰钖庡畨瑁呰剼链绋嫔簭
--nodeps锛氢笉妫镆ヤ緷璧栨
娉ㄦ剰锛歱kgname鏄杞浠跺寘镄勫悕瀛楋纴涓嶆槸rpm鍖呭悕瀛楋纴钥屾槸瀹夎呭悗杞浠跺寘镄勫悕瀛楋纴鍙浠ョ敤镆ヨ㈠懡浠ゆ潵镆ヨ㈣蒋浠跺寘钖嶃
3銆佸崌绾сrpm钬揢(鎴栬呪攗pgrade) file.rpm
Option锛
锘烘湰涓庡畨瑁呮椂镄刼ption涓镙凤纴链夊嚑涓鐗规畩镄勶细
--oldpackage锛氩厑璁镐竴涓镞х増链
4銆佹煡璇銆rpm 钬搎(鎴栬--query)
Option:
-p PACKAGE_FILE锛氭煡璇㈣蒋浠跺寘镄勬枃浠
-f FIEL锛氭煡璇FILE灞炰簬鍝涓杞浠跺寘
-a锛氭煡璇㈡墍链夊畨瑁呯殑杞浠跺寘
-g銆group锛氭煡璇㈠睘浜巊roup缁勭殑杞浠跺寘
--whatproVidesCAPABILITY锛氭煡璇㈡彁渚涗简CAPABILITY锷熻兘镄勮蒋浠跺寘
--whatrequiresCAPABILITY锛氭煡璇㈡墍链夐渶瑕丆APABILITY锷熻兘镄勮蒋浠跺寘
-i锛氭樉绀鸿蒋浠跺寘镄勬傝佷俊鎭
-l锛氭樉绀鸿蒋浠跺寘涓镄勬枃浠跺垪琛
-c锛氭樉绀洪厤缃鏂囦欢鍒楄〃
-s锛氭樉绀烘枃浠跺垪琛
-scripts锛氭樉绀哄畨瑁呫佸嵏杞斤纴镙¢獙鑴氭湰
--qf锛氢互鐢ㄦ埛鎸囧畾镄勬柟寮忔煡璇
--mp锛氭樉绀烘疮涓鏂囦欢镄勬牎楠屼俊鎭
--proVides锛氭樉绀鸿蒋浠跺寘鎻愪緵镄勫姛鑳
-R锛氭樉绀鸿蒋浠跺寘闇瑕佺殑锷熻兘
5銆佹牎楠屽凡缁忓畨瑁呯殑杞浠跺寘 rpm 钬揤(or 钬捣erify,or 钬搚)
Option阃夐”涓庡叾瀹冨懡浠ょ殑绫讳技
6銆佹牎楠岃蒋浠跺寘涓镄勬枃浠 rpm 钬揔(or 钬揷hecksig) file.rpm
Option:
-v锛氭樉绀虹増链淇℃伅
-vv锛氭樉绀鸿皟璇曚俊鎭
--rcfile銆FILELIST锛氲剧疆rpmrc 鏂囦欢涓篎ILELIST
7銆佸叾瀹僐PM阃夐”
--rebuilddb锛氶吨寤篟PM璧勬枡搴
--initdb锛氩垱寤轰竴涓鏂扮殑RPM璧勬枡搴
--quiet锛氩敖鍙鑳藉湴鍑忓皯杈揿嚭
--help锛氭樉绀哄府锷╂枃浠
--version锛氭樉绀篟PM褰揿墠鐗堟湰
涓婇溃鍙鏄瀵瑰父鐢ㄩ夐”镄勬荤粨锛屽叿浣撹缮链変粈涔堥梾棰桡纴鍙浠ョ敤man rpm锻戒护杩涜屾煡鐪嬶纴瀹樻柟鏂囦欢姘歌繙链濂界殑钥佸笀銆
涓夈*.bin镙煎纺瀹夎呮枃浠剁殑瀹夎
鍙闇鍙屽嚮鎴栧崟鍑*.bin鏂囦欢灏卞彲浠ユ牴鎹鎻愮ず瀹夎呬简锛屼笉鍐嶆暦杩般
瑕佹兂鍒朵綔涓涓猂PM镙煎纺镄勮蒋浠跺寘,闇瑕佺紪鍐栾蒋浠跺寘鎻忚堪鏂囦欢銆傚叾镙囧嗳锻藉悕镙煎纺涓:杞浠跺悕-鐗堟湰鍙-閲婂嚭鍙.spec(鐜板湪澶у氭儏鍐典笅閮芥槸鐩存帴鐢锛氲蒋浠跺悕.spec)锛岃繖涓鏂囦欢,璇︾粏鎻忚堪浜嗘湁鍏宠ヨ蒋浠跺寘镄勮稿氢俊鎭,濡傝蒋浠跺悕,鐗堟湰,绫诲埆,璇存槑鎽樿,鍒涘缓镞惰佹墽琛屼粈涔堟寚浠,瀹夎呮椂瑕佹墽琛屼粈涔堟搷浣,浠ュ强杞浠 鍖呮墍瑕佸寘钖镄勬枃浠剁瓑绛夈傛湁浜呜繖涓鏂囦欢,RPM灏卞彲浠ュ埗浣滃嚭鐩稿簲镄勫寘瑁规枃浠舵潵銆傚綋铹剁幇鍦ㄤ篃链変緥濡係ource rpm杩欐牱寮婧愮殑鍖呭埗浣滆緟锷╁伐鍏峰彧瑕佷竴涓绋嫔簭婧愬嵆鍙阃氲繃钖戝间笅涓姝ュ嵆鍙鍒朵綔銆
绠鍗旷殑涓涓鍒朵綔渚嫔瓙锛
鍏跺疄链濂界殑锷炴硶鏄锅氢釜杞浠跺寘銆傛垜璁板缑 rpm 鍜 debian 閮芥湁蹇阃熸墦鍖呯殑寮婧愯蒋浠跺彲浠ョ洿鎺ユ嬁𨱒ヤ娇鐢ㄥ嵆鍙銆
eg灏唍ginx镄则ar鍖呭埗浣滀负RPM鍖
1. 涓嬭浇nginx镄勬簮镰佸寘
2. 灏嗘枃浠舵斁鍒/usr/src/redhat/SOURCES/鐩褰曚笅
3. 缂栧啓SPEC鏂囦欢
[root@mail SPECS]# vinginx-0.8.35.spec
Summary:the first rpmpackage
Name:nginx
Version:0.8
Release:35
Vendor:[email protected]
License:Share
Group:Applications/Text
Source0:nginx-0.8.35.tar.gz
%description
my test nginx
%prep
tar -zxvf $RPM_SOURCES_DIR/nginx-0.8.35.tar.gz
%build
cd$RPM_BUILD_DIR/nginx-0.8.35
./configure
make
%install
cd$RPM_BUILD_DIR/nginx-0.8.35
make install
%clean
rm -rf$RPM_BUILD_DIR/nginx-0.8.35
%files
%defattr(-,root,root)
/usr/local/nginx/sbin/nginx
%doc $RPM_BUILD_DIR/nginx-0.8.35/README
4. 鍒朵綔RPM鍖
[root@mail SPECS]#rpmbuild -ba nginx-0.8.35.spec
鑻ヨ繍琛屾病链夐敊璇锛屽垯浜х敓/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm鍜/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm 涓や釜鏂囦欢銆
镐荤粨锛歳pm鍖呭备綍鍒朵綔涔嬩釜浜虹粡楠
涓 RPM浠嬬粛
RPM 鍓嶆槸RedHat Package Manager 镄勭缉鍐欙纴链镒忔槸Red Hat 杞浠跺寘绠$悊锛岄【钖嶆濅箟鏄疪ed Hat 璐$尞鍑烘潵镄勮蒋浠跺寘绠$悊;鐜板湪搴斾负RPM Package Manager镄勭缉鍐欍傚湪Fedora 銆丷edhat銆丮andriva銆丼uSE銆乊ellowDog绛変富娴佸彂琛岀増链锛屼互鍙婂湪杩欎簺鐗堟湰锘虹涓娄簩娆″紑鍙戝嚭𨱒ョ殑鍙戣岀増閲囩敤; RPM鍖呬腑闄や简鍖呮嫭绋嫔簭杩愯屾椂镓闇瑕佺殑鏂囦欢锛屼篃链夊叾瀹幂殑鏂囦欢;涓涓猂PM 鍖呬腑镄勫簲鐢ㄧ▼搴忥纴链夋椂闄や简镊韬镓甯︾殑闄勫姞鏂囦欢淇濊瘉鍏舵e父浠ュ栵纴杩橀渶瑕佸叾瀹幂壒瀹氱増链鏂囦欢锛岃繖灏辨槸杞浠跺寘镄勪緷璧栧叧绯汇
RPM鍙浠ヨ╃敤鎴风洿鎺ヤ互binary鏂瑰纺瀹夎呰蒋浠跺寘锛屽苟涓斿彲镟跨敤鎴锋煡璇㈡槸钖﹀凡缁忓畨瑁呬简链夊叧镄勫簱鏂囦欢;鍦ㄧ敤RPM鍒犻櫎绋嫔簭镞讹纴瀹冨张浼氲仾鏄庡湴璇㈤梾鐢ㄦ埛鏄钖﹁佸垹闄ゆ湁鍏崇殑绋嫔簭銆傚傛灉浣跨敤RPM𨱒ュ崌绾ц蒋浠讹纴RPM浼氢缭鐣椤师鍏堢殑閰岖疆鏂囦欢锛岃繖镙风敤鎴峰氨涓岖敤閲嶆柊閰岖疆鏂扮殑杞浠朵简銆俣PM淇濈暀涓涓鏁版嵁搴掳纴杩欎釜鏁版嵁搴扑腑鍖呭惈浜嗘墍链夌殑杞浠跺寘镄勮祫鏂欙纴阃氲繃杩欎釜鏁版嵁搴掳纴鐢ㄦ埛鍙浠ヨ繘琛岃蒋浠跺寘镄勬煡璇銆俣PM铏界劧鏄涓篖inux钥岃捐$殑锛屼絾鏄瀹冨凡缁忕Щ鍊煎埌SunOS銆丼olaris銆丄IX銆両rix绛夊叾瀹僓NIX绯荤粺涓娄简銆俣PM阆靛惊GPL鐗堟潈鍗忚锛岀敤鎴峰彲浠ュ湪绗﹀悎GPL鍗忚镄勬浔浠朵笅镊鐢变娇鐢ㄥ强浼犳挱RPM銆
浜 RPM鍖呭垎绫
鎴戜釜浜鸿や负rpm鍒嗕负涓ゅぇ绫伙纴
1 浜岃繘鍒剁被鍖咃纴鍖呮嫭rpm瀹夎呭寘(涓鑸鍒嗕负i386鍜寈86绛夊嚑绉)鍜岃皟寮忎俊鎭鍖呯瓑銆
2 婧愮爜绫诲寘锛屾簮镰佸寘鍜屽紑鍙戝寘搴旇ュ綊浣嶆ょ被銆
瀹冧滑涔嬮棿镄勫叧绯绘槸锛屾渶鍏堟垜浠鎸塺pm镓揿寘瑕佹眰鏀归犺蒋浠堕”鐩婧愮爜锛屽綋绗﹀悎瑕佹眰涔嫔悗灏卞彲浠ヤ娇鐢╮pmbuild锻戒护𨱒ョ敓鎴愪笉钖岀殑rpm鍖咃纴钖屾椂鐢熸垚镄勫寘涔嬮棿鐗堟湰鏄鐩存帴瀵瑰簲镄勶纴姣斿傜浉钖岀殑婧愮爜鍖呭皢鐢熸垚瀹屽叏鐩稿悓镄勪簩杩涘埗rpm鍖呫傚綋浣犲湪缃戜笂镆ユ垒rpm鍖呮椂锛屼竴鑸浣犲彲浠ュ湪RPMS鐩褰曚腑镓惧埌棰勭紪璇戠殑浜岃繘鍒跺寘锛岃屾簮镰佸寘鍒欎细鍦⊿RPMS鐩褰曞唴銆
鎴戜滑杩欓噷鎻愬埌镄凴PM鍒朵綔灏辨槸鎸囨敼阃犺蒋浠舵簮浠g爜浣夸箣绗﹀悎RPM镓揿寘瑕佹眰镄勮繃绋嬶纴杩欎篃鍙浠ョ瓑浠蜂负RPM婧愮爜鍖呯殑鍒朵綔杩囩▼锛屽洜涓哄綋浣犳湁浜嗘簮镰佸寘灏卞彲浠ョ洿鎺ョ紪璇戝缑鍒颁簩杩涘埗瀹夎呭寘鍜屽叾浠栦换镒忓寘銆
涓 RPM鍖呭埗浣滀粙缁
RPM鍖呯殑鍒朵綔锛屽嵆鏄疪PM婧愮爜鍖呯殑鍒朵綔銆
杩欓噷鎴戞兂璇磋碦PM鍖呭伐浣灭殑铡熺悊锛岃繖灏嗘湁锷╀簬鍏ㄩ溃镄勪简瑙RPM鍖呯$悊绯荤粺镄勭煡璇嗐
RPM鏄涓鸿В鍐虫簮镰佸寘涓嶆槗瀹夎(闇瑕佺紪璇)鍜岃蒋浠跺寘鐩镐簰涔嬮棿渚濊禆(鏄疪PM鍖呯$悊鍣ㄥ彲浠ヤ竴瀹氱▼搴﹁В鍐充緷璧栭梾棰)闂棰桡纴瀹冮氲繃鍦ㄦ帰娴嬫簮镰佸寘鍦╞uild鍜宨nstall阒舵电殑锷ㄤ綔銮峰缑链缁堢敓鎴愮殑闇瑕佸畨瑁呯殑绯荤粺閲岀殑鏂囦欢锛屽苟璁板綍涓嬩竴浜涘繀瑕佺殑镎崭綔(姣斿傚畨瑁呭畬鎴愬悗镓ц屾煇椤规搷浣)锛岀劧钖庢妸姝ょ粍鎴愪负涓涓鏁翠綋锛屽綋鍦ㄧ敤鎴峰畨瑁呮ゅ寘镞舵妸鍓嶉溃銮峰缑镄勬墍链夐梾棰桦拰璁板綍镄勬墍链夋搷浣滃师铡熸湰链镄勪綔鐢ㄧ殑瀹为檯绯荤粺涓娿
涓轰竴涓鏅阃氱殑婧愮爜镓揜PM鍖咃纴闇瑕佷笅闱涓浜涙搷浣滐纴棣栧厛闇瑕佸归”鐩镄凪akefile浣滃繀瑕佺殑鏀归犱互鏀鎸丷PM镓揿寘镎崭綔(瀹为檯涓婃ゆ搷浣滀笉鏄缁濆圭殑锛孲PEC鏂囨。鍜孧akefile镄勬槸鍗忚皟缁熶竴宸ヤ綔镄勶纴鍙瑕佷粬浠涔嬮棿閰嶅悎濂戒简鍏朵粬閮芥棤镓璋掳纴鎴戜滑涓鑸鍙鏄鎺ㄨ崘澶у跺敖閲忔寜琛屼笟镙囧嗳瑙勮寖镎崭綔钥屽凡);鍏舵℃槸阍埚瑰綋鍓嶉”鐩鎾板啓SPEC鏂囨。锛孲PEC鏂囨。鍖呮嫭浜哛PM镓揿寘杩囩▼镄勬搷浣滃唴瀹瑰拰鏂扮敓鎴愮殑RPM鍖呯殑锘烘湰淇℃伅绛夛纴瀹幂殑浣灭敤瀵硅薄鏄镓揿寘绋嫔簭rpmbuild銆
锲 RPM鍖呭埗浣滆繃绋
1 鍑嗗囨墦鍖呯幆澧
fedora绯荤粺涓嬩娇鐢ㄥ备笅锻戒护瀹夎卹pmbuild
#yum install rpmbuild
rpmbuild镄勫伐浣灭洰褰曞备笅锛
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/RPMS/i386
~/rpmbuild/SRPMS
濡傛灉浣犵殑鐢ㄦ埛鐩褰曚富鐩褰曚笅娌℃湁绫讳技鐩褰旷粨鏋勶纴浣犲彲浠ラ氲繃涓涓宸ュ叿杞浠舵潵镊锷ㄩ厤缃鍜岀敓鎴愶纴濡备笅銆
#yum installrpmdevtools
涓嬩简杩愯岃嚜锷ㄩ厤缃锻戒护镊锷ㄧ敓鎴愬备笂鐩褰曪纴骞堕厤缃涓浜涘繀瑕佹搷浣溿
#rpmdev-setuptree
rpmdev-setuptree锻戒护榛樿ゅ皢鍐嶅綋鍓岖敤鎴蜂富鐩褰曚笅鍒涘缓涓涓猂PM鏋勫缓镙圭洰褰旷粨鏋勶纴
濡傛灉闇瑕佹敼鍙樻¢粯璁や綅缃锛屽彲浠ヤ慨鏀归厤缃鏂囦欢:~/.rpmmacros涓鍙橀噺_topdir瀵瑰簲镄勫煎嵆鍙銆
涓鑸瑀pmbuild浼氩湪褰揿墠鐢ㄦ埛镄勪富鐩褰曚笅镊锷ㄥ缓绔嫔备笂鐩褰旷粨鏋勶纴濡傛灉鍦ㄤ綘瀵瑰簲鐢ㄦ埛镄勬瀯寤虹洰褰曚腑娌℃湁镊锷ㄥ缓绔嫔备笂鐩褰曪纴浣犲彲浠ラ氲繃镓嫔姩鏂瑰纺寤虹珛銆备笂闱㈢洰褰旷殑浣跨敤鏄杩欐牱鍒嗛厤镄勶纴SOURCES鏀剧疆镓揿寘璧勬簮锛屽寘𨰾婧愮爜镓揿寘鏂囦欢鍜岃ˉ涓佹枃浠剁瓑;SPECS鐩褰曟斁缃甋PEC鏂囨。;BUILD镓揿寘杩囩▼涓镄勫伐浣灭洰褰;RPMS鐩褰曞瓨鏀剧敓鎴愮殑浜岃繘鍒跺寘锛孯PM鍖呮牴鎹纭浠跺钩鍙颁笉钖屽垎绫伙纴i386琛ㄧず鐢熸垚i386缁撴瀯镄勫寘灏嗗瓨鏀惧湪璇ョ洰褰曚笅;SRPMS鐩褰曞瓨鏀剧敓鎴愮殑婧愮爜鍖呫
2 鎾板啓SPEC鏂囨。
SPEC鎾板啓鏄镓揿寘RPM镄勬牳蹇冿纴涔熺畻鏄链闅剧殑涓姝ワ纴濂藉湪鎴戜滑鍙浠ヤ粠鍙傜収涓涓绠鍗旷殑妯℃澘鏂囦欢寮濮嬶纴鍦ㄥ彲浠ュ疄鐜板熀链锷熻兘镄勫熀纭涓婂啀涓姝ヤ竴姝ョ殑镓╁厖鏂囨。鍐呭癸纴鐩磋呖瀹屽叏杈惧埌瑕佹眰銆备笅闱㈡槸涓涓绠鍗旷殑SPEC鏂囨。锛屽叾涓鍖呮嫭浜嗕竴浜涜存槑淇℃伅(娉锛#钖庨溃镄勫唴瀹逛负璇存槑淇℃伅)锛岃SPEC鏂囨。鏄瀵逛竴涓娴嬭瘯镄勮蒋浠堕”鐩甴ellorpm鍐欑殑锛宧ellorpm杞浠跺寘缂栬疟钖庝粎链変竴涓镓ц屾枃浠躲佷竴涓镓嫔唽鏂囦欢鍜屼竴涓椤圭洰璇存枃浠躲
hellorpm.spec鏂囨。镄勫唴瀹瑰备笅锛
-----------------------------------------------------------------------------
#杞浠跺寘绠瑕佷粙缁
Summary: hellorpm is atest program銆
#杞浠跺寘镄勫悕瀛
Name: hellorpm
#杞浠跺寘镄勪富鐗堟湰鍙
Version:2.2.6
#杞浠跺寘镄勬$増链鍙
Release: 1
#婧愪唬镰佸寘锛岄粯璁ゅ皢鍦ㄤ笂闱㈡彁鍒扮殑SOURCES鐩褰曚腑瀵绘垒
Source0:%{name}-%{version}.tar.gz
#鎺堟潈鍗忚
License: GPL
#瀹氢箟涓存椂鏋勫缓鐩褰曪纴杩欎釜鍦板潃灏嗕綔涓轰复镞跺畨瑁呯洰褰曞湪钖庨溃寮旷敤
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#杞浠跺垎绫
Group:Development/Tools
#杞浠跺寘镄勫唴瀹逛粙缁
%description
The hellorpm programis a test.
#琛ㄧず棰勬搷浣滃瓧娈碉纴钖庨溃镄勫懡浠ゅ皢鍦ㄦ簮镰佷唬镰丅UILD鍓嶆墽琛
%prep
#鏋勫缓BUILD鐜澧冿纴灏呜В铡嬫簮镰佸帇缂╁寘鍒痫UILD鐩褰
%setup-q
#BUILD瀛楁碉纴灏嗛氲繃鐩存帴璋幂敤婧愮爜鐩褰曚腑镊锷ㄦ瀯寤哄伐鍏峰畬鎴愭簮镰佺紪璇戞搷浣
%build
#璋幂敤婧愮爜鐩褰曚腑镄刢onfigure锻戒护
./configure
#鍦ㄦ簮镰佺洰褰曚腑镓ц岃嚜锷ㄦ瀯寤哄懡浠make
make
#瀹夎呭瓧娈
%install
#璋幂敤婧愮爜涓瀹夎呮墽琛岃剼链
makeDESTDIR=$RPM_BUILD_ROOT install
#鏂囦欢璇存槑瀛楁碉纴澹版槑澶氢綑鎴栬呯己灏戦兘灏嗗彲鑳藉嚭阌
%files
#璁剧疆鏂囦欢𨱒冮檺灞炴
%defattr(-,root,root)
#澹版槑/usr/local/bin/hellorpm灏嗗嚭鐜板湪杞浠跺寘涓
/usr/local/bin/hellorpm
#澹版槑骞惰剧疆鏂囦欢灞炴
%doc%attr(0444,root,root) /usr/local/man/man1/hellorpm.1
#钖屼笂锛屽0鏄庢枃妗f枃浠
%docREADME
-------------------------------------------------------------------------------
杩欎釜鏂囨。闇瑕佽存槑镄勪竴镣癸细
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
涓婇溃BuildRoot鍙橀噺琛ㄧず镄勬槸婧愮爜镄勪复镞舵寜镦х洰褰曪纴rpmbuild灏辨槸阃氲繃娆$洰褰曡幏寰楀皢瑕佹寜镦у埌绯荤粺涓镄勬墍链夋枃浠讹纴钥屽湪SPEC鏂囨。钖庨溃make install 锻戒护涓镄勫弬鏁瘅ESTDIR=$RPM_BUILD_ROOT鍗虫槸瀵硅ュ弬鏁扮殑寮旷敤锛岃繖涓鍙傛暟灏嗕紶缁横akefile鏂囦欢涓锻婅瘔镊锷ㄦ瀯寤哄伐鍏峰簲璇ュ畨瑁呮枃浠堕偅閲(瀹为檯涓婃垜鍐嶅墠鏂囨彁鍒拌繃镄凪akefile闇瑕佷綔涓浜涙敼阃犱互阃傚簲RPM镄勬瀯寤哄氨鍖呮嫭姝ゆ搷浣滐纴浣犵殑Makefile鏂囦欢涓镊冲皯瑕佺煡阆揿湪RPM鏋勫缓杩囩▼涓寮旷敤姝ゅ弬鏁扮殑鍊煎幓鎺у埗瀹夎呮搷浣灭殑鐩镙)銆
濡备笂涓涓绠鍗旷殑SPEC鏂囨。鎾板啓瀹屾垚锛屼笅闱㈡妸涓涓钖崭负hellorpm-2.2.6.tar.gz镄勬簮镰佸帇缂╂枃浠舵斁鍒
rpmbuild镙圭洰褰曚笅镄凷OURCES鐩褰曚笅(娉锛岀‘淇濇ゅ綊妗f枃浠惰В铡嫔悗镄勭洰褰曚负hellorpm-2.2.6锛屽惁鍒欎细链夐梾棰)銆
鍒版や竴涓瀹屾暣镄剅pm镓揿寘鐜澧冨凡缁忔瀯寤哄畬鎴愶纴涓嬮溃鎴戜滑灏卞彲浠ュ紑濮嬫瀯寤轰簩杩涘埗鍜屾簮浠g爜RPM鍖呫
3 鏋勫缓RPM鍖
鏋勫缓RPM鍖呮槸链夊懡浠rpmbuild鍦⊿PEC镄勬寚瀵间笅瀹屾垚銆
寮濮嬫瀯寤烘搷浣滐纴棣栧厛杩涘叆鍒板綋鍓岖敤鎴风殑rpmbuild镙圭洰褰(鍗充笂闱㈡彁鍒扮殑鐩褰旷幆澧)銆
#cd ~/rpmbuild/
镓ц屽备綍锻戒护锛-ba琛ㄧずbuild all锛屽嵆鐢熸垚鍖呮嫭浜岃繘鍒跺寘鍜屾簮浠g爜鍖呯殑镓链塕PM鍖咃纴涓嬫潵濡傛灉姝e父镄勮瘽锛宺pmbuild灏嗘e父阃鍑猴纴钖屾椂鍦≧PMS鐩褰曞拰SRPMS鐩褰曚腑灏嗙敓鎴愬瑰簲镄凴PM鍖呫
#rpmbuild -baSPECS/hellorpm.spec
杩欓噷浠呬粎浠嬬粛浜嗕竴涓链绠鍗曡蒋浠剁殑链绠鍗旷殑RPM镄勬墦鍖呮搷浣滆繃绋嬶纴璇稿傚甫链夊叡浜鏂囦欢镄勯渶瑕佽繘琛屽嶆潅閰岖疆镄勫叿链夊嶆潅渚濊禆鍏崇郴镄勭瓑绛夌殑椤圭洰镄勬墦鍖呬互鍙婂悗链熺殑缁存姢锛屽寘𨰾琛ヤ竵镄勫埗浣沧垜灏嗗湪涓嬫潵镄勬椂闂村畬鎴愯ˉ鍏呮洿鏂帮纴浠婂ぉ镞堕棿涓嶆棭浜嗭纴璇ヤ紤鎭浜!

Ⅳ 如何编译OpenWrt

搭建编译环境。编译建议在Linux下进行。我的系统是Linux mint 17,执行以下命令,构建编译环境:

sudo apt-get update
sudo apt-get install git-core build-essential

获取openwrt源码。在当前用户主目录下执行

git clone git://git.openwrt.org/openwrt.git

等待代码下载。结束后,目录下会出现openwrt文件夹。
配置软件源。进入openwrt目录,执行

./scripts/feeds update -a

./scripts/feeds install -a

检查编译环境是否完整:

make defconfig

make prereq

根据提示信息安装需要的软件包。如果提示类似

“tmp/.config-package.in:22022:warning: multi-line strings not supported”

的信息,打开 openwrt/tmp/.config-package.in,定位到对应行,添上丢掉的一个引号就可以了。
编译选项:

执行 make menuconfig,根据路由器情况,选择 Target System 和 Subtarget。如意云一代和极壹S的 Target System 均为 Ralink RT288x/RT3xxx 。对于Subtarget ,前者为 MT7620n based boards ,后者为 MT7620a based boards。

其他选项根据个人喜好选择。一般来说要选中LuCI界面,选中中文语言包等等。
开始编译:

执行 make -j2 V=s 进行编译。-j后面的数字是电脑物理CPU数量加一。V=s可以显示出编译的详细信息。首次编译大概需要几个小时的时间。
错误排查:

编译失败,一般有两种情况:

1.代码下载链接失效。首次编译时,编译程序会实时从网上下载一些软件包的代码。如果下载链接失效,编译就会失败。这时需要根据软件包的名称,从网上自行下载,然后放在 openwrt/dl/ 目录下,执行 make -j2 V=s 继续编译即可。

2.软件包自身有问题。这时重新执行 make menuconfig ,取消对应软件包选中即可。这种情况比较少见,目前已知的有 tor 等。

编译成功,但没有生成固件。这种情况一般是因为选中的软件包过多,导致固件大小超过16MB。重新执行 make menuconfig,去掉一些软件包,重新执行编译即可。
得到固件。在排除了所有错误后,现在终于得到了固件。对于如意云RY-1,固件在 openwrt/bin/ramips 目录下,形如

openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin

等等。

Ⅵ 如何在windows下编译GMP软件包

1、下载GMP源代码,展开到d:/gmp
http://gmplib.org/#DOWNLOAD
2、下载MinGW windows下的GNU C编译器
http://sourceforge.net/project/showfiles.php?group_id=2435
中的AutoMated MinGW Installer下载完后执行,选择下载并安装
安装选项选择第一,二和最后共三个组件,安装在d:/minGW
3、 http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe?modtime=1079444447&big_mirror=1
下载MSYS MinGW的辅助环境
安装到d:/msys,安装时有两个提示,第一个提示输入Y, 第二个提示输入MinGW安装路径d:/MinGW

完成后桌面出现msys快捷方式

4、进入d:/msys/1.0/etc编辑fstab文件
加入行
d:/gmp /gmp

5、点击msys进入环境
cd /gmp进入gmp虚拟路径
依次执行(每个都会执行很长时间)
./configure
make
make install
则编译出静态包
如果执行
./configure --disable-static --enable-shared
make
make install
则编译出dll

Ⅶ 如何编译安装源码包软件

怎样安装以源码包打包的软件;

1、源码包的打包格式;
源代码一般以file.tar.gz file.tar.bz2或file.src.rpm 打包;file.tar.gz和file.tar.bz2格式的解包命令如下;
[root@localhost beinan]# tar jxvf file.tar.bz2
[root@localhost beinan]# tar zxvf file.tar.gz

至于file.src.rpm 的用法,请参见:《file.src.rpm 使用方法的简介》

2、如何编译安装源码包;(大多数)

1)解开软件包查看帮助文档;

我们解开一个包后,进入解压包,一般都能发现README(或reame)和INSTALL( 或install);或doc(或DOC)目录;看名字就知道个差不多;
比如我们下载一个比较新的fcitx 的软件包,比如是 fcitx-3.2-050827.tar.bz2
我们在解开这个软件包会会发现如下的文件;
[root@localhost fcitx]# tar jxvf fcitx-3.2-050827.tar.bz2
[root@localhost fcitx]#cd fcitx
[root@localhost fcitx]# ls
aclocal.m4 config.guess configure debian INSTALL Makefile.in src xpm
AUTHORS config.h.in configure.in depcomp install-sh missing THANKS
autogen.sh config.rpath COPYING doc lib mkinstalldirs TODO
ChangeLog config.sub data fcitx.spec.in Makefile.am README tools
所以我们就可以看fcitx的INSTALL 和doc目录的安装文档了;里面都告诉我们如何安装;
有时安装文档也会在开发者的主页上有详细的说明,及常见问题的处理等;比如 LumaQQ

2)编译安装软件的条件;

首 先我们在Linux系统中至少得把开发工具安装上,比如 gcc ;perl;python;glibc;gtk;make ;automake 等开发工具或基础包;还要安装一些相应的开发包,一般是文件名包括dev的,比如kernel-devel;还有一些开发库,比如以lib开头的;如果您 在编译软件时,有时提示缺少什么东西之类的,大多少的是这些开发工具和开发库等;从光盘中找出安装就是了;有时光盘没有提供,请用google搜索相应的 软件包,有时可能也会用到源码包编译安装所依赖的包;
有时本来系统中已经安装了所依赖的包,但系统提示找不到应该怎么办?这时需要我们设置一下PKG_CONFIG_PATH的环境变量就行了;
#export PKG_CONFIG_PATH=/usr/lib/pkgconfig

#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
然后我们再来运行编译的./configure ;make ;make install ,尝试着来吧;
以java开发的工具开发的程序,要用到 jre或者jdk ;jdk已经包括jre了,所以如果我们只是要求有一个java程序运行的环境,只需要安装jre就行了;安装好jre,配置一下java的环境变量就可以用了。如果是图形界面的程序,点点鼠标就OK了;
用perl 开发的程序,是需要perl环境的,所以必须得把perl的包安装上,python 也同理;

3)编译安装软件的方法;
大多以tar.gz 和tar.bz2打包软件,大多是通过 ./configure ;make ;make install 来安装的;有的软件是直接make;make install ;
我们可以通过./configure --help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,如果没有的就不用./configure ;直接make;make install 就行了;
./configure 比较重要的一个参数是 --prefix ,用--prefix 参数,我们可以指定软件安装目录;当我们不需要这个软件时,直接删除软件的目录就行了;
比如我们可以指定fcitx 安装到 /opt/fcitx 目录中;
[root@localhost fcitx]#./configure --prefix=/opt/fcitx
如果我们不需要fcitx 时,可以直接删除 /opt/fcitx 目录;
所以我们举这个例子中,fcitx如果定制安装到 /opt/fcitx目录中,完整的安装方法应该是:
[root@localhost fcitx]# tar jxvf fcitx-3.2-050827.tar.bz2
[root@localhost fcitx]#cd fcitx
[root@localhost fcitx]# ./configure --prefix=/opt/fcitx
[root@localhost fcitx]# make
[root@localhost fcitx]# make install
调用fcitx ,应该是
[beinan@localhost ~]#/opt/fcitx/bin/fcitx
如果您想要让fcitx 只要执行fcitx ,就能调用,请配置环境变量,或者在/usr/bin 中做一个fcitx 的链接;
[root@localhost beinan]# ln -s /opt/fcitx/bin/fcitx /usr/bin/fcitx
一般的情况下都有说,但大多软件没有提供源码包的卸载方法;我们可以找到软件的安装点删除。主要看你把它安装在哪了。
设置环境变量PATH,请参见:《在Fedora Core 中,有些常用命令怎么没有?解决办法设置PATH》
所以您的PATH可以设置成这样的;
export PATH=".:/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/X11R6/bin:/sbin:/opt/fcitx/bin"
当然这只是举个例子,fcitx 可以进入桌面自动运行的,请参看 http://www.fcitx.org 官方站上的安装说明;举个例子只是让大家好理解一点;
再举一个例子,比如我想安装mlterm ;并指定安装目录为/opt/mlterm中; http://mlterm.sourceforge.net
#./configure --prefix=/opt/mlterm
#make
#make install

把源码包安装的软件,都指定安装在 /opt目录中,这样不就知道了软件安装在哪里了;也方便卸载;

热点内容
c语言完美数 发布:2024-11-08 22:27:43 浏览:105
远程桌面服务器搭建h5网页吗 发布:2024-11-08 22:27:37 浏览:959
简单点编程 发布:2024-11-08 22:21:50 浏览:812
mysql存储过程教程 发布:2024-11-08 22:20:56 浏览:201
shell脚本sort 发布:2024-11-08 22:20:55 浏览:182
linux怎么登录 发布:2024-11-08 22:19:07 浏览:410
段页式存储管理中 发布:2024-11-08 22:03:22 浏览:734
易语言注册码源码 发布:2024-11-08 22:03:22 浏览:238
手游源码交易 发布:2024-11-08 21:58:03 浏览:151
快手极速版用户名和密码是多少 发布:2024-11-08 21:55:36 浏览:867