亚洲色中文字幕无码AV,国产亚洲精品观看91在线,久久乐国产精品亚洲综合http://www.tkk7.com/Vencent/category/5870.html<font color='orange'>本博客僅為收集所用。在此對原作者表示感謝。</font> <center> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><div class="custom"> <script type="text/javascript"><!-- google_ad_client = "pub-6256612161572960"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_page_url = document.location; google_color_border = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_bg = ["EEEEEE","EEEEEE","EEEEEE","EEEEEE"]; google_color_link = ["FFDDAA","0033FF","00008B","99CC33"]; google_color_url = ["999999","0033FF","00008B","FFCC00"]; google_color_text = ["0033FF","AA9999","0033FF","AA9999"]; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div></center> <!--bgsound src="http://www.tkk7.com/Files/Vencent/The%20Mass%20Era.zip" volume="10" loop="10"/--> <script type="text/javascript" src="http://shooter.cn/api/shteapi.js" charset='utf-8'></script> <link rel="stylesheet" type="text/css" />zh-cnTue, 26 Jun 2007 16:09:09 GMTTue, 26 Jun 2007 16:09:09 GMT60Apt-get使用指南http://www.tkk7.com/Vencent/articles/126076.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Mon, 25 Jun 2007 04:58:00 GMThttp://www.tkk7.com/Vencent/articles/126076.htmlhttp://www.tkk7.com/Vencent/comments/126076.htmlhttp://www.tkk7.com/Vencent/articles/126076.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/126076.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/126076.html
  • apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後運行該命令。此外您需要定期運行這一命令以確保您的軟件包列表是最新的。
  • apt-get install packagename——安裝一個新軟件包(參見下文的aptitude)
  • apt-get remove packagename——卸載一個已安裝的軟件包(保留配置文件)
  • apt-get --purge remove packagename——卸載一個已安裝的軟件包(刪除配置文件)
  • dpkg --force-all --purge packagename 有些軟件很難卸載,而且還阻止了別的軟件的應用,就可以用這個,不過有點冒險。
  • apt-get autoclean apt會把已裝或已卸的軟件都備份在硬盤上,所以如果需要空間的話,可以讓這個命令來刪除你已經刪掉的軟件
  • apt-get clean 這個命令會把安裝的軟件的備份也刪除,不過這樣不會影響軟件的使用的。
  • apt-get upgrade——更新所有已安裝的軟件包
  • apt-get dist-upgrade——將系統升級到新版本
  • apt-cache search string——在軟件包列表中搜索字符串
  • dpkg -l package-name-pattern——列出所有與模式相匹配的軟件包。如果您不知道軟件包的全名,您可以使用“*package-name-pattern*”。
  • aptitude——詳細查看已安裝或可用的軟件包。與apt-get類似,aptitude可以通過命令行方式調用,但僅限于某些命令——最常見的有安裝和卸載命令。由于aptitude比apt-get了解更多信息,可以說它更適合用來進行安裝和卸載。
  • apt-cache showpkg pkgs——顯示軟件包信息。
  • apt-cache dumpavail——打印可用軟件包列表。
  • apt-cache show pkgs——顯示軟件包記錄,類似于dpkg –print-avail。
  • apt-cache pkgnames——打印軟件包列表中所有軟件包的名稱。
  • dpkg -S file——這個文件屬于哪個已安裝軟件包。
  • dpkg -L package——列出軟件包中的所有文件。
  • apt-file search filename——查找包含特定文件的軟件包(不一定是已安裝的),這些文件的文件名中含有指定的字符串。apt-file是一個獨立的軟件包。您必須 先使用apt-get install來安裝它,然後運行apt-file update。如果apt-file search filename輸出的內容太多,您可以嘗試使用apt-file search filename | grep -w filename(只顯示指定字符串作為完整的單詞出現在其中的那些文件名)或者類似方法,例如:apt-file search filename | grep /bin/(只顯示位于諸如/bin或/usr/bin這些文件夾中的文件,如果您要查找的是某個特定的執行文件的話,這樣做是有幫助的)。

  • 【全文】

    原文出處:https://help.ubuntu.com/community/AptGetHowto

    原文作者:UbuntuWiki

    授權許可:

    翻譯人員:sigus 5451vs5451 youyou keke initnas

    校正人員:MillenniumDark


    適用版本:

    “起 初GNU/Linux系統中只有.tar.gz。用戶必須自己編譯他們想使用的每一個程序。在Debian出現之後,人們認為有必要在系統中添加一種機制 用來管理安裝在計算機上的軟件包。人們將這套系統稱為dpkg。至此著名的‘package’首次在GNU/Linux上出現。不久之後紅帽子也開始著手 建立自己的包管理系統‘rpm’。

    “GNU/Linux的創造者們很快又陷入了新的窘境。他們希望通過一種快捷、實用而且高效的方式來 安裝軟件包。這些軟件包可以自動處理相互之間的依賴關系,并且在升級過程中維護他們的配置文件。Debian又一次充當了開路先鋒的角色。她首創了APT (Advanced Packaging Tool)。這一工具後來被Conectiva移植到紅帽子系統中用于對rpm包的管理。在其他一些發行版中我們也能看到她的身影。”

    • -- 摘自 Debian APT HOWTO

    "同時,apt是一個很完整和先進的軟件包管理程序,使用它可以讓你,又簡單,又準確的找到你要的的軟件包, 并且安裝或卸載都很簡潔。 它還可以讓你的所有軟件都更新到最新狀態,而且也可以用來對ubuntu進行升級。"

    "apt是需要用命令來操作的軟件,不過現在也出現了很多有圖形的軟件,比如Synaptic, Kynaptic 和 Adept。"

    下面將要介紹的所有命令都需要sudo!使用時請將“packagename”和“string”替換成您想要安裝或者查找的程序。

    • apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後運行該命令。此外您需要定期運行這一命令以確保您的軟件包列表是最新的。
    • apt-get install packagename——安裝一個新軟件包(參見下文的aptitude)
    • apt-get remove packagename——卸載一個已安裝的軟件包(保留配置文件)
    • apt-get --purge remove packagename——卸載一個已安裝的軟件包(刪除配置文件)
    • dpkg --force-all --purge packagename 有些軟件很難卸載,而且還阻止了別的軟件的應用,就可以用這個,不過有點冒險。
    • apt-get autoclean apt會把已裝或已卸的軟件都備份在硬盤上,所以如果需要空間的話,可以讓這個命令來刪除你已經刪掉的軟件
    • apt-get clean 這個命令會把安裝的軟件的備份也刪除,不過這樣不會影響軟件的使用的。
    • apt-get upgrade——更新所有已安裝的軟件包
    • apt-get dist-upgrade——將系統升級到新版本
    • apt-cache search string——在軟件包列表中搜索字符串
    • dpkg -l package-name-pattern——列出所有與模式相匹配的軟件包。如果您不知道軟件包的全名,您可以使用“*package-name-pattern*”。
    • aptitude——詳細查看已安裝或可用的軟件包。與apt-get類似,aptitude可以通過命令行方式調用,但僅限于某些命令——最常見的有安裝和卸載命令。由于aptitude比apt-get了解更多信息,可以說它更適合用來進行安裝和卸載。
    • apt-cache showpkg pkgs——顯示軟件包信息。
    • apt-cache dumpavail——打印可用軟件包列表。
    • apt-cache show pkgs——顯示軟件包記錄,類似于dpkg –print-avail。
    • apt-cache pkgnames——打印軟件包列表中所有軟件包的名稱。
    • dpkg -S file——這個文件屬于哪個已安裝軟件包。
    • dpkg -L package——列出軟件包中的所有文件。
    • apt-file search filename——查找包含特定文件的軟件包(不一定是已安裝的),這些文件的文件名中含有指定的字符串。apt-file是一個獨立的軟件包。您必須 先使用apt-get install來安裝它,然後運行apt-file update。如果apt-file search filename輸出的內容太多,您可以嘗試使用apt-file search filename | grep -w filename(只顯示指定字符串作為完整的單詞出現在其中的那些文件名)或者類似方法,例如:apt-file search filename | grep /bin/(只顯示位于諸如/bin或/usr/bin這些文件夾中的文件,如果您要查找的是某個特定的執行文件的話,這樣做是有幫助的)。

    * apt-get autoclean——定期運行這個命令來清除那些已經卸載的軟件包的.deb文件。通過這種方式,您可以釋放大量的磁盤空間。如果您的需求十分迫切,可 以使用apt-get clean以釋放更多空間。這個命令會將已安裝軟件包裹的.deb文件一并刪除。大多數情況下您不會再用到這些.debs文件,因此如果您為磁盤空間不足 而感到焦頭爛額,這個辦法也許值得一試。

    您可以通過定義別名(alias)來提高這些命令的輸入速度。例如,您可以在您的*~/.bashrc*文件中添加下列內容

    alias acs='apt-cache search'
    alias agu='sudo apt-get update'
    alias agg='sudo apt-get upgrade'
    alias agd='sudo apt-get dist-upgrade'
    alias agi='sudo apt-get install'
    alias agr='sudo apt-get remove'

    或者使用前面介紹的aptitude命令,如“alias agi='sudo aptitude install'”。



    Vincent Chen 2007-06-25 12:58 發表評論
    ]]>
    xmms和bmp里的重要插件http://www.tkk7.com/Vencent/articles/32040.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Wed, 22 Feb 2006 16:48:00 GMThttp://www.tkk7.com/Vencent/articles/32040.htmlhttp://www.tkk7.com/Vencent/comments/32040.htmlhttp://www.tkk7.com/Vencent/articles/32040.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/32040.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/32040.html
    前言:歡迎轉載,但是您必須保留原文的所有信息,包括作者和時間。

    一、其實今天寫了兩篇文章,剛才那篇內容是 OpenBSD 的安裝腳本和
    FreeBSD 的實用腳本,現在再貼一篇關于 xmms 和 bmp 的重要插件,
    當然了,依然是針對 FreeBSD 和 OpenBSD 的,它們比 Linux 難用。
    還是按以往慣例發在 NewSoftware 區,因為它們都是討論應用問題。

    長期以來,因為 Unix 一般用于服務器而不是桌面系統,導致可視化和
    多媒體方面明顯落后于 Windows,從而嚴重降低了對普通用戶的吸引力。
    現在 xorg 比 XF86 改進了很多,我們只要再把音樂、DVD 搞定,基本
    上就是一臺 Unix 下的多媒體 PC 了,這對于推動 Unix 在群眾中普及
    有一定的積極作用。聽音樂可以用 xmms 和 bmp (beep-media-player),
    看 DVD 主要用 xine。

    編譯 xine 不難,只要到 FreeBSD 的 ports 里去編譯就可以了。此外
    編譯 xmms 以及顯示漢字也不難,可以參考 FreeBSD簡單漢化終結篇。
    到 Google 搜一下有很多,但要注意 zh_CN.EUC 應該是 zh_CN.eucCN,
    否則你在這個語言環境下編譯 xmms 會報告說缺乏 glib 庫支持。

    二、我要討論的是,在 OpenBSD 里的 libsun 以及 FreeBSD 里的 oss
    和 esound 是不健全的,它們在 KDE 環境下有時候無法發出聲音。通過
    查找資料,我發現應該使用 arts 的 Output,因為 KDE 的聲音管理器
    就是 arts。同時,除了眾所周知的 mp3 之外,wma 格式也很流行,我
    找到了 wma 的 Input 解碼插件并使用成功。

    三、下面列出下載這些 plugin 的地方,大家也可以根據文件名來搜索。

    http://www.xmms.org/plugins.php?category=output

    http://www.xmms.org/plugins.php?details=22
    http://www.freshports.org/audio/xmms-arts/
    http://www.freebsdsoftware.org/audio/xmms-arts.html

    http://www.xmms.org/plugins.php?details=85
    http://www.freshports.org/audio/xmms-arts_output/
    http://www.freebsdsoftware.org/audio/xmms-arts_output.html

    http://havardk.xmms.org/plugins/arts_output/
    http://havardk.xmms.org/plugins/arts_output/arts_output-0.7.1.tar.gz

    http://archives.neohapsis.com/archives/openbsd/2004-10/0686.html
    http://www.monkey.org/openbsd/archive/ports/0410/msg00589.html
    arts_output.tar.gz (OpenBSD patch)

    http://www.gentoo-portage.com/media-plugins/bmp-arts
    http://www.sosdg.org/~larne/w/Plugin_list
    http://linuv.uv.es/mirror/gentoo/distfiles/
    http://linuv.uv.es/mirror/gentoo/distfiles/bmp-arts-plugin-0.7.2.tar.gz

    http://www.ubuntu.org.cn/support/documentation/wiki/BeepMediaPlayer
    BMP 是一個使用GTK2的看起來更好的XMMS的分支。WMA插件下載與安裝。
    http://download.berlios.de/bmp-plugins/bmp-wma-0.1.1.tar.gz

    http://mcmcc.bat.ru/xmms-wma/
    http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2
    v.1.0.5 - Added opportunity to build plug-in for player BMP.
            - Fix bug with blanks with use gnome-vfs in BMP.
            - WARNING: BEEPMP-WMA conflict with BMP-WMA. Remove BMP-WMA or
              do not use BEEPMP-WMA.

    四、下面列出編譯的方法,由于時間關系我就不詳細講解了。請大家按
    步驟操作,否則,編譯時可能會提示你:缺乏需要的庫文件。

    /usr/bin/ld: cannot find -lffwma  {直接編譯 xmms-wma 時的錯誤}
    --------------------------------------------------------------

    cd /usr/ports/devel/libtool13
    make install clean
    cd /usr/ports/devel/libtool15
    make install clean
    cd /usr/local/bin
    ln -s libtool15 libtool

    cd /usr/ports/chinese/xmms
    make install clean                {編譯完最好在 XWin 運行一下}
    cd /usr/ports/multimedia/beep-media-player
    make install clean                {編譯完最好在 XWin 運行一下}

    cd /usr/ports/distfiles/Output

    gzip -dc bmp-wma-0.1.1.tar.gz | tar -xvf -
    cd bmp-wma-0.1.1
    ./configure                       {如果沒安裝bmp,配置時會報錯}
    make install
    ls -la src/libffwma/*.a
    cp -pf src/libffwma/*.a /usr/local/lib
    ls -la /usr/local/lib/libff*   # { Make sure libffwma.a is okay }
    cd ..

    bzip2 -dc xmms-wma-1.0.5.tar.bz2 | tar -xvf -
    cd xmms-wma-1.0.5
    vi xmms-wma.c                  # { Replace malloc.h to stdlib.h }
    vi ffmpeg-strip-wma/mem.c      # { Replace malloc.h to stdlib.h }
    gmake install-home
    cd ..

    gzip -dc arts_output-0.7.1.tar.gz | tar -xvf -
    cd arts_output-0.7.1
    ./configure
    make install
    cd ..

    gzip -dc bmp-arts-plugin-0.7.2.tar.gz | tar -xvf -
    cd bmp-arts-plugin-0.7.2
    mkdir =build
    cd =build
    ../configure
    make install
    cd ../..

    五、注意:在 OpenBSD 下有個補丁要打,否則的話 arts 插件無法使用。
    此外 xmms 和 bmp 可以兼容 Winamp 大多數 Skins,放到相應目錄就行。

    附件: arts_output_obsd.tar.gz (1713 Bytes)


    Vincent Chen 2006-02-23 00:48 發表評論
    ]]>
    OpenBSD的定制安裝腳本http://www.tkk7.com/Vencent/articles/32039.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Wed, 22 Feb 2006 16:39:00 GMThttp://www.tkk7.com/Vencent/articles/32039.htmlhttp://www.tkk7.com/Vencent/comments/32039.htmlhttp://www.tkk7.com/Vencent/articles/32039.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/32039.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/32039.html
    前言:歡迎轉載,但是您必須保留原文的所有信息,包括作者和時間。

    一、其實幾年前我就用過 OpenBSD 3.3了,當時覺得界面確實很粗糙。
    正因為花哨的東西少了,所以開發出來的系統缺陷相對少一些。所謂
    做多錯多,做少錯少,我覺得 OpenBSD 體現了簡約美,而 FreeBSD
    則比較適合那些喜歡裝好系統就用的人。當時考慮到 OpenBSD 上還要
    自己去編譯 KDE、Gnome 之類的窗口管理器太麻煩,所以用的不多。

    二、ChinaUnix 論壇上提供了 MichaelBibby 朋友所制作的 OpenBSD
    3.8 版 ISO 文件。我裝過后發現缺少 packages 的安裝說明,手工
    安裝比較辛苦,而且該版的 KDE 3.4.2 桌面三個圖標點擊后無法正確
    運行, 這三個默認的圖標分別鏈接到 trash:/ , system:/ , /root。

    此外該版對 xmms 的漢化支持不好,按照 FreeBSD 簡單漢化終結篇
    的方法可以完成 FreeBSD 系統以及 xmms 的漢化,但是 zh_Cn.eucCN
    語言和 -sony-...-gbk-0 字體對 OpenBSD 不起作用。除了各種小毛
    病外,總體來說這個 ISO 還是比較全的,包含很多編譯好的軟件包。
    如果大家想裝好就用,裝一下這個 ISO 并不斷完善是很好的辦法。

    http://bbs.chinaunix.net/viewthread.php?tid=691951&extra=&page=1
    [下載]MichaelBibby 朋友的 OpenBSD 3.8

    三、后來我自己寫了個安裝腳本,大大提高了安裝的便利性。不過我
    發現里面有兩個以 redhat 開頭的軟件包會干擾系統正常運行,它們
    是 Linux 仿真包,或許應該裝到別的目錄下,為了省事我的安裝腳本
    干脆就跳過它們了。下面簡單介紹一下安裝步驟以及基本原理,將來
    任何人自己定制了更好的 ISO 版后,都可以利用這個安裝腳本。

    四、安裝步驟:

    a) 首先,你要下載附件里的 init.tar.gz,最好是把本機的 C 盤做
    成 150M 左右的 FAT16 分區,Windows系統放 D 盤,那么 C 盤就單
    純做啟動盤并跟 Unix 交換數據了。如果不這樣,將來必須另找機器
    把 init.tar.gz 用 ftp 或 ssh 傳到你需要使用的 OpenBSD 機器上。

    多系統共存的文章請大家上網去搜索,我以前寫過 OS Loader 的用法。
    我把 init 壓縮包解壓后放到 C:\Boot\Unix\init 目錄里,所以后面

    b) 解壓后大家可以看到 init 目錄下有 csh 和 ksh 兩個目錄,其中
    ksh 是針對 OpenBSD 默認 Shell,csh 則針對 FreeBSD 默認 Shell。

    這里順帶說一下,FreeBSD 4.x 的 SSHD 不能設置禁止 DNS,所以一
    旦機器不能訪問外網的 DNS 服務器,那么任何機器都不能用 SSH 來
    登陸這臺機器,所以我在 csh 目錄下的 alias 里設置了 exit 為自
    動關閉 DNS,這樣默認就不使用 DNS 了,需要的時候再開。大家運行
    al 就可以看到所有的 alias 了。其中以 dn 開頭的那些是修改 dns
    開或關的,以 zh 開頭的那些是準備漢化時調整系統語言類型的。

    裝 csh 包需要把這個目錄下的文件都拷貝到 $HOME,然后再改名如下:
    cat login.csh > .login
    cat cshrc.csh >> .cshrc
    cp /usr/bin/make /usr/bin/bmake    {這是為了將來可以切換make}

    下面列出允許和關閉 DNS 的 alias 定義,貼出來與大家共同研究。

    alias exit 'dndis; logout'
    alias dncat 'cd /etc; cat resolv.conf'
    alias dndis 'cd /etc; mv resolv.conf resolv.temp; cat resolv.temp | sed
    "s/^nameserver/#nameserver/g" > resolv.conf; rm resolv.temp'
    alias dnena 'cd /etc; mv resolv.conf resolv.temp; cat resolv.temp | sed
    "s/^#nameserver/nameserver/g" > resolv.conf; rm resolv.temp'

    c) 現在回到正題,安裝 OpenBSD 的 ksh 包也是把文件拷貝到 $HOME。
    alias.ksh 是系統別名 alias 的集合,cat profile.ksh > .profile
    則可以讓你登陸系統后立刻加載 alias.ksh,sk-38.ini 是需要跳過的
    安裝名單。前面說了,如果不跳過這兩包,可能導致系統無法使用。

    當 OpenBSD 的 alias.ksh 加載后,你就可以使用它來安裝 ChinaUnix
    上的 ISO 所提供的那些 packages 了。安裝完畢后你可以設置 CU_CDR
    為 0,這樣系統用的 alias 就會大大減少。

    首先啟動 OpenBSD,插入安裝盤,輸入 mcd,它會 mount 你的安裝盤
    到 /mnt 目錄,然后輸入 culist 看有哪些包可以裝,它會顯示以下的
    選項:cupack, cukde3, cufc4, cuacr7, cuacf7, 你可以按需要安裝。
    裝完后輸入 ucd,它會 umount 光盤,然后把盤取出就算完成了。使用
    KDE 的時候編輯 ~/.xinitrc,內容寫 startkde 就可以了。

    五、基本原理:

    a) 大家用 al | grep cu 就可以看到所有跟安裝有關的 alias 用法。
    其中 cubase 是我最早使用的 cuinst,后來發現 3.8 ISO 里有兩個
    包影響系統使用,逐步擴充為以 cubase 為基礎,cushow 查看出錯的
    原因,cubash 研究 if 在 alias 里的用法,cutest 為測試安裝,而
    cuskip 則是正式安裝,使用 $HOME/sk-38.ini。如果用戶想自己動手
    查看以上腳本的結果,只要把 cuinst 改為對應的功能塊就可以了。

    b) 核心原理是通過定義系統變量 CUPACK,然后用腳本進行批量解壓。
    里面主要是用到了 for 的技巧,以及用 grep 查找忽略列表,用 if
    來判斷結果。需要注意的是它們在 ksh 下測試通過,如果你換到別的
    Shell 下用,必須根據具體語法特點進行修改。

     alias cubase='for i in /mnt/3.8/i386$CUPACK; do gzip -dc $i | tar -xvf -; done'
     alias cubash='for i in /mnt/3.8/i386$CUPACK; do echo $i; if [ "`gzip -dc $i |
    tar -tvf - | grep bash`" != "" ]; then echo *{_bash_}; sleep 5; fi; done'
     alias cushow='for i in /mnt/3.8/i386$CUPACK; do echo $i; gzip -dc $i | tar
    -tvf - | grep bash; done'

     alias cuskip='for i in /mnt/3.8/i386$CUPACK; do echo $i; if [ "`grep $i
    $HOME/sk-38.ini`" = "" ]; then gzip -dc $i | tar -xvf - > /dev/null; else echo
    *{_skip_}; sleep 5; fi; done'
     alias cutest='for i in /mnt/3.8/i386$CUPACK; do echo $i; if [ "`grep $i
    $HOME/sk-38.ini`" = "" ]; then gzip -dc $i | tar -tvf - > /dev/null; else echo
    *{_skip_}; sleep 5; fi; done'
     alias cuinst='cuskip'
     alias culist='alias | grep cuinst'

     alias cupack='export CUPACK=/packages/*gz; cd /usr/local; cuinst'
     alias cukde3='export CUPACK=/packages/kde-3.4.3/*gz; cd /usr/local; cuinst'

    c) 從上面的清單可以看出,cupack 和 cukde3 都是建立在 cuinst 的
    基礎上的,先定義好 CUPACK 的值再調用安裝腳本。cuinst 是指定使用
    哪一個腳本。culist 是顯示所有可用安裝包以及當前的 cuinst 類型。

    上面的腳本里,cubase 是單純的解壓,不考慮任何意外情況。cushow里
    顯示在什么地方裝了 bash,因為按照 cubase 的做法最后 bash 是不能
    用的。cubash 利用 if 精簡了顯示,讓我們找到有問題的軟件包,其實
    就是以 redhat 開頭的包。沒時間研究如何使用,直接忽略算了。

    我們把要忽略的包寫到 sk-38.ini,然后放到 $HOME 目錄下,這樣將來
    就可以隨時定制安裝哪些軟件包了。cuskip 和 cutest 本質上是一樣的,
    不同的是 cutest 用了 tar -tvf - 來顯示文件清單,而不是真正解壓。
    最后,希望大家如果做出了更好的 OpenBSD ISO,請使用這個安裝腳本,
    如果改進了上面的安裝腳本或者有更好的方案,請發一份給我,謝謝。

    附件:init.tar.gz.rar


    Vincent Chen 2006-02-23 00:39 發表評論
    ]]>
    在mingw環境下編譯mplayer-1.0pre1的步驟http://www.tkk7.com/Vencent/articles/23390.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Sun, 11 Dec 2005 14:09:00 GMThttp://www.tkk7.com/Vencent/articles/23390.htmlhttp://www.tkk7.com/Vencent/comments/23390.htmlhttp://www.tkk7.com/Vencent/articles/23390.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/23390.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/23390.html

    Vincent Chen 2005-12-11 22:09 發表評論
    ]]>
    Linux平臺Makefile文件的編寫基礎篇 (轉載)http://www.tkk7.com/Vencent/articles/23309.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Sat, 10 Dec 2005 18:44:00 GMThttp://www.tkk7.com/Vencent/articles/23309.htmlhttp://www.tkk7.com/Vencent/comments/23309.htmlhttp://www.tkk7.com/Vencent/articles/23309.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/23309.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/23309.html目的:
           基本掌握了 make 的用法,能在Linux系統上編程。
    環境:
           Linux系統,或者有一臺Linux服務器,通過終端連接。一句話:有Linux編譯環境。
    準備:
           準備三個文件:file1.c, file2.c, file2.h
           file1.c:
                  #include <stdio.h>
                  #include "file2.h"
                  int main()
                  {
                         printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n");
                         File2Print();
                         return 0;
                  }

           file2.h:

                  #ifndef FILE2_H_
                  #define    FILE2_H_

                          #ifdef __cplusplus

                                extern "C" {

                         #endif

                         void File2Print();

                         #ifdef __cplusplus

                                }

                         #endif

                  #endif

           file2.c:
                  #include "file2.h"
                  void File2Print()
                  {
                         printf("Print file2**********************\n");
                  }

    基礎:
           先來個例子:
           有這么個Makefile文件。(文件和Makefile在同一目錄)
           === makefile 開始 ===
                  helloworld:file1.o file2.o
                         gcc file1.o file2.o -o helloworld

                 
    file1.o:file1.c file2.h
                         gcc -c file1.c -o file1.o

                   file2.o:file2.c file2.h

                         gcc -c file2.c -o file2.o

                  clean:

                         rm -rf *.o helloworld

           === makefile 結束 ===

    一個 makefile 主要含有一系列的規則,如下:
    A: B
    (tab)<command>
    (tab)<command>

    每個命令行前都必須有tab符號。

     

    上面的makefile文件目的就是要編譯一個helloworld的可執行文件。讓我們一句一句來解釋:

           helloworld : file1.o file2.o                 helloworld依賴file1.o file2.o兩個目標文件。

           gcc File1.o File2.o -o helloworld      編譯出helloworld可執行文件。-o表示你指定 的目標文件名。

          

           file1.o : file1.c    file1.o依賴file1.c文件。

           gcc -c file1.c -o file1.o                  編譯出file1.o文件。-c表示gcc 只把給它的文件編譯成目標文件, 用源碼文件的文件名命名但把其后綴由“.c”“.cc”變成“.o”。在這句中,可以省略-o file1.o,編譯器默認生成file1.o文件,這就是-c的作用。

     

                  file2.o : file2.c file2.h
                  gcc -c file2.c -o file2.o

    這兩句和上兩句相同。

     

           clean:

                  rm -rf *.o helloworld

    當用戶鍵入make clean命令時,會刪除*.o helloworld文件。

     

    如果要編譯cpp文件,只要把gcc改成g++就行了。

    寫好Makefile文件,在命令行中直接鍵入make命令,就會執行Makefile中的內容了。

     

    到這步我想你能編一個Helloworld程序了。

     

    上一層樓:使用變量

           上面提到一句,如果要編譯cpp文件,只要把gcc改成g++就行了。但如果Makefile中有很多gcc,那不就很麻煩了。

           第二個例子:

           === makefile 開始 ===
                  OBJS = file1.o file2.o
                  CC = gcc
                  CFLAGS = -Wall -O -g

                  helloworld : $(OBJS)
                         $(CC) $(OBJS) -o helloworld

                  file1.o : file1.c file2.h
                         $(CC) $(CFLAGS) -c file1.c -o file1.o

                  file2.o : file2.c file2.h
                         $(CC) $(CFLAGS) -c file2.c -o file2.o

     

                  clean:

                         rm -rf *.o helloworld
    === makefile
    結束 ===

     

           這里我們應用到了變量。要設定一個變量,你只要在一行的開始寫下這個變量的名字,后 面跟一個 = 號,后面跟你要設定的這個變量的值。以后你要引用 這個變量,寫一個 $ 符號,后面是圍在括號里的變量名。

     

    CFLAGS = -Wall -O –g,解釋一下。這是配置編譯器設置,并把它賦值給CFFLAGS變量。

    -Wall          輸出所有的警告信息。

    -O              在編譯時進行優化。

    -g               表示編譯debug版本。

     

           這樣寫的Makefile文件比較簡單,但很容易就會發現缺點,那就是要列出所有的c文件。如果你添加一個c文件,那就需要修改Makefile文件,這在項目開發中還是比較麻煩的。

     

     

    再上一層樓:使用函數

           學到這里,你也許會說,這就好像編程序嗎?有變量,也有函數。其實這就是編程序,只不過用的語言不同而已。

           第三個例子:

           === makefile 開始 ===
                  CC = gcc

                  XX = g++
                  CFLAGS = -Wall -O –g

                  TARGET = ./helloworld

                  %.o: %.c

                         $(CC) $(CFLAGS) -c $< -o $@

                  %.o:%.cpp

                         $(XX) $(CFLAGS) -c $< -o $@

     

                  SOURCES = $(wildcard *.c *.cpp)
                  OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))


                  $(TARGET) : $(OBJS)
                         $(XX) $(OBJS) -o $(TARGET)

                         chmod a+x $(TARGET)

    clean:

           rm -rf *.o helloworld
    === makefile
    結束 ===

    函數1wildcard

           產生一個所有以 '.c' 結尾的文件的列表。

           SOURCES = $(wildcard *.c *.cpp)表示產生一個所有以 .c.cpp結尾的文件的列表,然后存入變量 SOURCES 里。

     

    函數2patsubst

           匹配替換,有三個參數。第一個是一個需要匹配的式樣,第二個表示用什么來替換它,第三個是一個需要被處理的由空格分隔的列表。

    OBJS = $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCES)))表示把文件列表中所有的.c,.cpp字符變成.o,形成一個新的文件列表,然后存入OBJS變量中。

     

    %.o: %.c

           $(CC) $(CFLAGS) -c $< -o $@

    %.o:%.cpp

           $(XX) $(CFLAGS) -c $< -o $@

           這幾句命令表示把所有的.c,.cpp編譯成.o文件。

           這里有三個比較有用的內部變量。$@ 擴展成當前規則的目的文件名, $< 擴展成依靠       列表中的第一個依靠文件,而 $^ 擴展成整個依靠的列表(除掉了里面所有重 復的文件名)。

     

           chmod a+x $(TARGET)表示把helloworld強制變成可執行文件。

           到這里,我想你已經能夠編寫一個比較簡單也比較通用的Makefile文件了,上面所有的例子都假定所有的文件都在同一個目錄下,不包括子目錄。

           那么文件不在一個目錄可以嗎?

           怎么編寫Makefile生成靜態庫?

           你還想更上一層樓嗎?

           請聽下回分解。



    Vincent Chen 2005-12-11 02:44 發表評論
    ]]>
    主站蜘蛛池模板: 成人激情免费视频| 久久国产免费福利永久| 成人毛片免费视频| 亚洲综合在线成人一区| 无码免费一区二区三区免费播放| 亚洲色婷婷综合久久| 好湿好大好紧好爽免费视频| 亚洲另类激情专区小说图片| 污污的视频在线免费观看| 亚洲成av人片在线观看天堂无码 | 一区二区视频在线免费观看| 国产aa免费视频| 精品女同一区二区三区免费播放 | 日本特黄特色aa大片免费| 亚洲中文字幕乱码熟女在线| 成年女人男人免费视频播放| 亚洲av中文无码乱人伦在线观看| 永久中文字幕免费视频网站| 337P日本欧洲亚洲大胆艺术图| 免费在线视频一区| 成人精品视频99在线观看免费| 亚洲国产精品一区二区成人片国内 | 日本免费福利视频| 黄色免费网址在线观看| 亚洲日本一区二区三区在线不卡| 成人国产精品免费视频 | 亚洲人成电影亚洲人成9999网| 97国产在线公开免费观看| 亚洲乱码日产精品BD在线观看| 日韩视频免费在线| 久久九九免费高清视频| 亚洲国产一区二区a毛片| 免费看国产成年无码AV片| 朝桐光亚洲专区在线中文字幕| 国产成人麻豆亚洲综合无码精品 | www视频免费看| 久久亚洲精品成人无码| 国产亚洲人成A在线V网站| 18pao国产成视频永久免费| 亚洲丰满熟女一区二区哦| 亚洲女初尝黑人巨高清|