?? index.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>第一講</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="GENERATOR" CONTENT="StarOffice/5.1 (Linux)">
<META NAME="COPYRIGHT" CONTENT="魏永明">
<META NAME="AUTHOR" CONTENT="魏永明">
<META NAME="CREATED" CONTENT="20000329;17342600">
<META >
<STYLE>
<!--
H1 { color: #ffff00; font-family: "timmons", serif }
TD P { color: #ffff00 }
P { color: #ffff00 }
A:link { color: #00b8ff }
A:visited { color: #ff3366 }
-->
</STYLE>
</HEAD>
<BODY TEXT="#ffff00" LINK="#00b8ff" VLINK="#ff3366" BACKGROUND="../images/velvet.jpg">
<H1 ALIGN=CENTER>
第一講 Linux 編程入門與基本編程工具的使用
</H1>
<H2>主要內容</H2>
<UL SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="whatis.html">什么是 Linux</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="history.html">Linux 的發展歷史以及關鍵人物</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="others.html">Linux 與其他操作系統</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="basic.html">Linux 的編程常識</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="scenario.html">Linux 上進行程序開發的典型場景</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="vi.html">萬年編輯器: vi</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="prog_script.html">程序和腳本</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="compiler.html">Linux 上的 C 編譯器和調試器</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="make.html">GNU make 和 makefile</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="utilities.html">實用工具</A></P>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<A HREF="bash.html">Bash 命令行與腳本</A></P>
</UL>
<H2>整體思路</H2>
<P>
本講是系列講座的第一講。其目的主要是通過介紹 Linux 上編程的基本工具以及一些新手必須掌握的技巧,迅速引導新手入門,以避免走彎路。<BR>
首先對 Linux 作一簡單介紹,然后通過講解 Linux 上進行編程的常識以及典型場景的演示,使大家對 Linux 上的程序開發有一個感性認識。在此基礎上,重點講述 Linux 上 C 語言編程的基本工具,包括編譯器和調試器,主要是它們的重要選項和基本用法。接下來講述在項目組織和開發過程中非常重要的工具,即 GNU make 和 makefile。最后,介紹程序開發過程最為常用的工具,以及將這些工具有機組織起來的 Shell 機制,即命令行和腳本。
</P>
<H2>各部分要點</H2>
<UL SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.1 什么是 Linux</P>
<UL>
<LI>Linux 的發音</LI>
<LI>Linux 的官方定義</LI>
<LI>POSIX 及其重要地位</LI>
<LI>GNU 和 Linux 的關系</LI>
<LI>GPL 及其主要內容</LI>
<LI>Linux 的主要發行版</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.2 Linux 的發展歷史以及關鍵人物</P>
<UL>
<LI>UNIX, GNU, Linux 的關鍵人物及貢獻</LI>
<LI>Linux 發展的重要里程碑</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.3 Linux 與其他操作系統</P>
<UL>
<LI>Linux 與主要 UNIX 系統之間的關系</LI>
<LI>Linux 與 Windows 操作系統</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.4 Linux 的編程常識</P>
<UL>
<LI>標準 (ANSI C, POSIX, SVID, XPG, ...)</LI>
<LI>函數庫和系統調用</LI>
<LI>在線文檔 (man, info, HOW-TO, ...)</LI>
<LI>C 語言編程風格</LI>
<LI>庫和頭文件的保存位置</LI>
<LI>共享庫及其相關配置</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.5 Linux 上進行程序開發的典型場景</P>
<UL>
<LI>控制臺上的開發場景</LI>
<LI>X Window 上的開發場景</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.6 萬年編輯器: vi</P>
<UL>
<LI>vi 的工作模式</LI>
<LI>編輯模式</LI>
<LI>插入模式</LI>
<LI>命令模式</LI>
<LI>shell 切換</LI>
<LI>選項設置</LI>
<LI>vim 和 gvim 的高級特色</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.7 程序和腳本</P>
<UL>
<LI>程序:編寫, 編譯, 調試和執行</LI>
<LI>腳本:編寫, 執行</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.8 Linux 上的 C/C++ 編譯器和調試器</P>
<UL>
<LI>運行 gcc/egcs</LI>
<LI>gcc/egcs 的主要選項</LI>
<LI>gdb</LI>
<LI>gdb 的常用命令</LI>
<LI>gdb 使用范例</LI>
<LI>其他程序/庫工具 (ar, objdump, nm, size, strings, strip, ...)</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.9 GNU make 和 makefile</P>
<UL>
<LI>GNU make</LI>
<LI>makefile 基本結構</LI>
<LI>makefile 變量</LI>
<LI>GNU make 的主要預定義變量</LI>
<LI>隱含規則</LI>
<LI>makefile 范例</LI>
<LI>運行 make</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.10 實用工具</P>
<UL>
<LI>正則表達式</LI>
<LI>壓縮和歸檔工具 (gzip, bzip2, tar, ...)</LI>
<LI>搜索和排序 (grep, find, sort, ...)</LI>
<LI>文件編輯 (sed, tr)</LI>
<LI>文件比較 (cmp, comm, diff, ...)</LI>
<LI>其他 (ed, emacs, ...)</LI>
</UL>
<P><IMG SRC="../images/poliball.gif" WIDTH=16 HEIGHT=16 ALIGN=ABSMIDDLE>
1.11 Bash 命令行與腳本</P>
<UL>
<LI>Bash 介紹</LI>
<LI>重要的命令行機制 (I/O 重定向, 管道, ...)</LI>
<LI>Bash 腳本介紹</LI>
<LI>變量</LI>
<LI>控制結構</LI>
<LI>范例</LI>
</UL>
</UL>
<H2>練習</H2>
<OL>
<LI>如果還沒有安裝 Linux 系統的話,請安裝一種 Linux 發行版,并掌握 Linux 的基本使用。</LI>
<LI>在下面這些練習中需要編輯文件時,請使用 vi 編輯器。</LI>
<LI>編寫一個 Bash 腳本,用來將當前目錄樹中(遞歸)所有 DOS 格式的文本文件轉換為 UNIX 格式的文本文件,新文件名稱添加后綴 .unix。</LI>
<LI>試著將自己在 DOS 或 Windows 下編寫過的程序移植到 Linux,編譯通過并測試正確性。</LI>
<LI>從網上下載 CCE 或 MiniGUI 的源代碼,然后研究其 Makefile 的結構。</LI>
<LI>用 C 語言或自己喜歡的語言實現第 3 題。</LI>
</OL>
<H2>參考書目</H2>
<OL>
<LI>Phil Cornes, <I>The Linux A - Z</I>, Prentice Hall Europe, 1997.<BR>
(中譯本已由電子工業出版社出版, 童壽彬等譯)</LI>
<LI>Naba Barkakati, <I>The Linux Secrets</I>, IDG Books Worldwide, Inc. 1999.<BR>
(中譯本即將由電子工業出版社出版, 魏永明等譯)</LI>
<LI>John Goerzen, <I>The Linux Programming Bible</I>, IDG Books Worldwide, Inc. 1999.<BR>
(中譯本即將由電子工業出版社出版, 魏永明等譯)</LI>
</OL>
<H2>進一步讀物</H2>
<UL>
<LI>W. Richard Stevens, <I>Advanced Programming in the UNIX Environment</I>, Chpater 1 and Chapter 2.</LI>
</UL>
<H2>反饋</H2>
本講由<A HREF="mailto:ymwei@263.net">魏永明</A>講解。歡迎任何意見和建議,可發 email: <A HREF="mailto:ymwei@263.net">ymwei@263.net</A> 與魏永明聯系。
<P>
<CENTER>
<A HREF="http://www.aka.citf.net">AKA 自由軟件系列講座</A>
</CENTER>
</P>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -