怎樣安裝以源碼包打包的軟體;
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目錄中,這樣不就知道了軟體安裝在哪裡了;也方便卸載;
B. 如何把資源文件編譯進exe中
把兩個文件編譯進exe程序中,只需要在resource頁insert進來就可以了。
但是你在bug文件夾中雙擊exe文件,是找不到該資源的。要使用該資源你可以將資源釋放到硬碟,然後用文件的方式載入釋放目錄的資源文件。也可以將資源通過資源編號載入到內存,讀取內存數據。
C. C語言中如何裝入資源文件 用C++裝入資源文件,可以做到。 現在我的其他程序必須在C模式下編譯。
編譯不通過提示的是什麼錯誤? 你只簡單的說運行錯誤,會認為你已經編譯通過了,看到後面才知道你是編譯不通過
取消 預編譯頭 呢?
D. android 怎麼把源碼中的資源文件編譯進jar包
這是個工具條事件,有沒有放工具條了,到部件中去選上Microsoft Windows Common Controls 6.0 (SP6),其中有個工具條控制項。 frmShow 是一個同名的類的對象,使用之前要確保已經定義了。
E. 如何將源代碼編譯成jar包
先打開命令提示符(win2000或在運行框里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創建新的存檔
-t 列出存檔內容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標准輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用zip壓縮格式
-M 不產生所有項的清單(manifest〕文件
-i 為指定的jar文件產生索引信息
-C 改變到指定的目錄,並且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。
首先在資源文件當前目錄寫一個清單文件example.mf
mf文件應是以下格式:
第一行為:
Main-Class: Hello
然後最少兩個空行。
其中的Hello.class是你寫的程序中main函數所在的那個類名。
有兩點必須記得:
1,在第一行中"Main-class:"之後一定要有一個空格。後有最少兩個空行
2,類名不能寫成Hello.class的格式,要省了後輟。
我試過了,你錯的原因是"Main-class:"之後沒有一個空格。
在CLASS目錄下運行:jar cfm example.jar example.mf A.class B.class
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
來個小例子試試看:
我們只有一個HelloWorld,如下:
public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
將這個java文件存到C盤跟目錄下,ok,接下來,
在先前打開的命令提示符下(跳轉到C盤提示符下),我們輸入javac HelloWorld.java,然後繼續輸入:jar cvf hello.jar HelloWorld.class,回車後去你的C盤看看,多了什麼,沒錯 hello.jar 。
基本的步驟我們現在都知道了,你可以自己去嘗試一下隨著jar後面的參數的不同,結果有什麼變化。
緊接著我們看看如何運行我們的jar包。
在進入正題之前,你要先打開我們剛剛做好的jar包看看,多了什麼呢,META-INF目錄?再看看裡面是什麼,還有一個MANIFEST.MF文件是不是?用文本編輯器(我這里是UltraEdit)打開它看看:
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
就是這樣。這里我們對它進行修改,加一句:Main-Class: HelloWorld (在第三行)。這個就是我們之前寫的那個類,也就是我們的入口類。也即,
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld
接下來,我們在命令提示符里執行:
jar umf MANIFEST.MF app.jar (應該是hello.jar吧)
這樣我們使用了我們自己的MANIFEST.MF文件對原來默認的進行了更新。你不妨可以再進去看看是不是添上了Main-
Class: HelloWorld這一句。 (是嗎,我怎麼沒試出來,提示
java.io.FileNotFoundException:MANIFEST.MF(系統找不到指定的文件)怎麼回事?
)
Ok,這個最後的一步了,來驗證我們做的一切,在命令提示符中輸入:
java -jar hello.jar(執行)
出現了什麼, Hi, Hello World!
我們再來看看jar文件在tomcat中發布,注意:在tomcat中我們就不能再用jar這種格式,而改war格式,它是專門用於web應用的,其實整個過程下來基本上和jar是類似的:
先准備我們要打包的資源。
找到存放tomcat的webapps目錄,進到其中,新建一個文件夾,這里命名為hello,再進去新建WEB-INF文件夾,再進去新
建 classes文件夾,此時我們也將我們唯一的servlet,HelloWorld.java放到這里,在與classes目錄同級下建立一文
件 web.xml。Ok,目前我們初步建立了一個簡單的web應用。
這是HelloWorld.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!
對它編譯。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
在命令提示符下進到先前創制的hello目錄下,執行 jar cvf hello.war * ,我們便得到hello.war。將它拷貝至webapps目錄下,ok,來看最後一步,打開tomcat的目錄conf中的server.xml,加入:
<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!運行它,啟動tomcat,後在瀏覽器中輸入http://localhost:8080/hello/HelloWorld,有了嗎?
最後,如果你想用ant來完成以上的打包活動,下面就告訴你:
對於jar來說。在build.xml中,
<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
對於war,
<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就這么多,希望對你有點幫助。:)
補充:
jar基本操作:
1. 創建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(詳細的) output.
3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.
2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(詳細的) output.
3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(僅提取文件yahh.txt)
2)jar xf yahh.jar alex/yahhalex.txt(僅提取目錄alex下的文件yahhalex.txt)
3)jar xf yahh.jar(提取該jar包中的所有文件或目錄)
4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.
5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file
F. WinDBus源碼包如何編譯
大致分成以下幾個階段:並以以Linux下的GCC編譯器舉例第一階段:預處理,這個階段處理宏等第二階段:編譯,包括語法檢查,頭文件檢查等 g++ -c name.o name.cpp name.h 生成目標文件第三階段:鏈接,包括靜態鏈接與動態鏈接 g++ -o name name.o 生成匯編文件,可以直接運行
G. 怎麼編譯android源碼包res的圖片資源
必須手動編譯下指定的圖片文件生成R.
$touch frameworks/base/packages/SystemUI/res/drawable-hdpi/stat_sys_dect_register_null.png
H. 如何運行和編譯jar
一、源文件情況
源文件位置為:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java
前提:已安裝 jdk ,並配置好環境變數。
二、過程
1、編譯:
提示符進入 D:\temp 路徑下,輸入:javac com\ldq\WeatherDemo.java
生成類文件:WeatherDemo.class
2、打包:
提示符進入 D:\temp 路徑下,輸入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成檔案文件:WeatherDemo.jar
3、修改 MANIFEST.MF 文件:
由於引用了外部的類,所以要添加引用類的路徑,即修改MANIFEST.MF文件。保存如下內容到 D:\temp下,文件名 MANIFEST.MF
Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar
注意在後面空兩行。
提示符進入 D:\temp 路徑下,輸入:jar umf MANIFEST.MF WeatherDemo.jar
執行時會提示更新的內容。
4、添加包含引用類的相應文件:
在 D:\temp 路徑下,新建 lib 文件夾,講對應的 jaxrpc.jar ... 拷入其中,此時,即可雙擊(或在提示符下輸入:java -jar WeatherDemo.jar)運行 WeatherDemo.jar 文件了。
三、總結
雙擊運行 jar 文件時,虛擬機會到 jar 文件中下找 .MF 文件,找到對應的 Main-Class 運行,引入的類在 Class-Path 所指路徑。
事實上可以利用 winrar或winzip 工具打開 jar 文件,直接將修改好的 MANIFEST.MF 拷入覆蓋,class文件也可以做同樣的操作,節省了輸入復雜難記的命令。另外,對於 javaME 生成的 jar 文件,限制嚴格些,MANIFEST.MF 文件中有個文件大小的欄位,可以先保存,查看文件大小,再修改保存。
另一種方法是通過 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此時,所有的引用類都被打包在 jar 文件里了。
I. Java中帶包源程序如何編譯運行(下題)
先帶包編譯javac -d E4_9.java 然後運行包內的class文件java tom.jiafei.E4_9
J. 什麼叫做編譯包
Borland出品的Delphi,有著閃電般的編譯速度,但是在界面控制項使用較多、工程項目較大的時候,編譯一個工程仍需要一段時間,打開龐大的Delphi IDE,也需要時間。其實,在一個工程開發結束,調試完成之後的Release編譯,完全可以用命令行來執行,因為Delphi的編譯器參數不像C++編譯器那樣復雜。