apache交叉編譯
⑴ 如何學習linux
1、學習linux要學的內容很多,很多東西必須了解其機制,所以並不單單的如windows那樣傻瓜式的學習,因為windows本身就是針對不懂電腦的人群。。
2、精通這種詞很難定義,反正要學的東西很多。
3、在windows下安裝虛擬機對於新手學習linux較方便,在linux安裝windows虛擬機(我的經驗是卡,我用的是vmware 而且不是一般的卡) ,起初條件差,自己裝了雙系統,後來就買兩台電腦,一台LINUX一台WINDOWS。
下面就是詳細的說一下。。
一.為什麼要學linux?
當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!
二.起步
你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上而應集中精力學習最有用的東西。
【注】現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮:)
如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬碟上,你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單
從此現在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的「天才unix」的氣質。
三.進階
掌握至少50個以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面環境操作
掌握.tgz.rpm.biz等軟體包的常用安裝方法
學習添加外設,安裝設備驅動程序(比如modem)
熟悉Grub/Lilo引導器及簡單的修復操作
熟悉系統固有目錄的名稱及公用
學會用mount命令訪問其他文件系統
了解vi,gcc,gdb等常用編輯器,編譯器,調試器
學習linux環境下的簡單組網
建議:買一本不需要太厚的linux教材,大致可以滿足要求(現在的書越來越多了,還帶很多圖,我當時可沒這么多書)
四.高級應用
澄清一些概念:linux的普通操作與真正的系統管理不能相提並論,後者需要很多知識
1.英語
即使你不學linux,我也強烈建議你學好英文[U.S.english]。因為實質上計算機語言就是英文和字元,所謂的多國語言只是外部包裝。你必須能無障礙的閱讀大量的英文技術文檔在搜索引擎找到的英文網站和網頁中熟練的檢索最好能有用英文直接交流的能力,擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距。
2.shell[sed/awk]
shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似於win下的.bat但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上
這也是CS中的一個重要思想。此外,shell可以實現工作自動化,這個概念也比較重要sed,awk用來處理文本,歷來很常用。
3.Perl/php
漂亮的腳本, CGI的首選,比ASP好,應用面很廣
4.C\C++
C、C++是linux/unix的核心語言,系統代碼都是C寫的
5.ASM
系統底層及內核,硬體,設備驅動程序,嵌入式開發都需要。//走核心路線的話,c\c++,asm最重要
6.Java,Python,Tcl,XML
五、系統管理篇
在熟悉linux的基礎上還需要掌握至少一種unix。我首推Solaris,其次是FreeBSD比如運營級系統一般是Solaris+Oracle/DB2之類的學習apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、Mysql/PostgreSQL/Oracle、Bind等各種應用伺服器的構架及電子商務的應用熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型區域網,分布式集群等各種企業級應用解決方案熟悉多用戶管理,資料庫管理,文件系統,邏輯存儲管理,日誌分析,備份與災難數據修復系統補丁,內核升級,以及在此基礎上的防火牆構架等以保障系統安全在內的各種系統管理技能。
我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員
各種基於linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內搜索引擎尋找最新文檔,以避免錯誤和漏洞有幾本技術大全和技術內幕我認為都是這方面不錯的書
六、深入學習linux
我個人理解的讀linux內核需要的基礎:在此之前,希望先把應用層的東西學一下,那樣會比較好理解
1.C
如果學過潭浩強的大學教科書(除了編幾個數學模型好像什麼也做不了的那種),建議再看一下《The C Programming Language》Second Edition這本聖經(如果想學緩沖區溢出,這點C的功力可能是不夠的,還有<C陷阱與缺陷>,<C專家編程>,<C\C++深層探索>,反正經典書看多了是沒有壞處的)
2.asm (AT&T語法,保護模式)
保護模式下的比較復雜,基本上每本講內核的書都會有介紹有80x86 Intel語法的基礎就行,
有興趣可以看看Intel的官方網站
3.數據結構(離散數學)
計算機專業的核心課程,重要性我就不說了
4.操作系統原理
看懂這個再去讀linux吧
5.微機原理/組成原理(數字電路)
底層直接和硬體打交道,所以這個也要
6.了解linux/unix
我想至少你要會操作吧,了解unix的API
7.軟體工程/編譯原理
⑵ Cannot find bounds of current function是怎麼回事
Cannot find bounds of current function是找不到當前函數的界。
1、gdb找不到應用程序的調試符號,檢查編譯選項已經添加了調試相關選項。使用file命令檢查載入的文件:$ file httpd_sequential
httpd_sequential: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped。
2、編譯應用程序的gcc與調試程序的gdb不匹配,arm-eabi-gdb需要的是arm-eabi-gcc編譯生成的映像文件。gdb不檢查ELF文件頭給出錯誤報告。
3、使用正確的gcc編譯其編譯後重新使用file命令檢查文件類型:$ file httpd_sequential
httpd_sequential: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped。
4、在嵌入式系統開發過程通常需要交叉編譯,必須小心處理所使用的編譯器和調試器,特別是在使用Eclipse等集成開發環境的情況下要仔細核對開發環境使用的是那個編譯器和調試器。默認情況下Eclipse調用的是本地編譯器和調試器而不是交叉編譯器。
⑶ 2440 linux 如何在文件系統啟動後自動運行我的程序
開機後自動運行用戶的應用程序或啟動系統服務的命令保存在開發板根文件系統的/usr/etc/rc.local文件中。有的開發板開機後自動運行圖形界面程序,需要按住ctrl+c讓開發板進入到linux的SHELL提示符界面。其實可通過注釋掉rc.local文件中調用圖形界面的命令,增加運行用戶應用程序的命令,達到開機自動運行用戶應用程序的目的。
下面以我做的實驗為例,描述具體的實現步驟。該方法源於網路,我加以驗證,稍做修改,此文相當於轉載。
1.進入pc機的Linux 操作系統,在/nfs/usr/下通過mkdir lz 命令新建一個名為lz的文件夾,進入lz文件夾,通過mkdir hello新建一個hello文件夾用來存放我們將要編寫的hello.c文件和編譯生成的可執行文件。
2.在/nfs/usr/lz/hello下通過vi hello.c命令新建hello.c文件,編輯如下測試程序:
#include <stdio.h>
int main(){
printf("Hello,test arm-linux!\n");
return 0;
}
完成編輯後通過:wq保存後退出。
3.主機通過如下命令交叉編譯環境編譯hello.c:
#arm-linux-gcc –o hello hello.c
4.通過ls 命令可以看到在/nfs/usr/lz/hello/下已經生成了hello可執行文件,我們可以在開發板上通過./hello來測試自己編寫的hello.c執行情況
5.修改rc.local文件,在文件的最後通過『#』釋掉啟動圖形界面的指令,增加執行用戶應用程序hello的指令,具體實現如下:
#export PATH=$QPEDIR/bin:$PATH
#qtopia
#/usr/qtopia/bin/qtopia
/usr/lz/hello/./hello
註:前三行是注釋掉啟動圖形界面,最後一行是添加的執行用戶的hello測試程序。
6.重啟開發板,通過vivi參數配置讓開發板通過nfs掛載主機上的文件系統,這時我們就可以通過超級終端看到開發板已經運行了我們編寫的hello程序。
⑷ apache2.2 移植到arm
去下載arm版本的吧。這樣做肯定行不通。
你下這個試試。
http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/apache_2.2.20-1_arm.ipk
⑸ 如何在 Intel x86 伺服器上構建 IBM PowerLinux 應用程序 第2頁
環境和配置
測試環境有一個 IBM Flex System® 組成,該系統有多個 IBM Flex System x240 計算節點和兩個基於 IBM POWER7 處理器的節點(一個 Flex System p260 和一個 Flex System p460)。出於本項目的目的,我使用一個 Flex system x240 計算節點來交叉編譯 Apache httpd 和 PostgreSQL。構建二進製程序後,我將它們轉移到 Flex System p460 計算節點。圖 7 顯示了 IBM Flex System 測試環境的布局圖。
圖 7. IBM Flex System 測試環境
以下是我的系統配置、操作系統級別和其他與系統設置相關的信息。
Flex System x240 計算節點
用於交叉編譯二進製程序的 Intel 節點僅需要足夠的處理能力和內存,以便能夠構建 Power 二進製程序。配置如下:
基於內核的虛擬機 (KVM) 管理程序 Red Hat 6.5
32 個處理器
64 GB 內存
IBM Storwize® V7000 存取區域網路 (SAN) 連接磁碟
KVM Guest 系統
Red Hat Enterprise Linux 6.5
4 個處理器
16 GB 內存
一個 virtio 磁碟:100 GB
一個配置為 br0 的虛擬網路介面卡 (NIC)
所有其他 KVM Guest 系統都已關閉,以消除破壞環境的任何可能性。
Flex System p440 計算節點
Flex System p440 計算節點包含多個邏輯分區 (LPAR),其中一個配置為測試伺服器。PowerLinux 伺服器配置如下:
IBM PowerVM® 來賓
Red Hat Enterprise Linux 6.5
8 個處理器(專用)
32 GB 內存
Storwize V7000 SAN 連接磁碟 (50 GB)
通過虛擬 I/O 伺服器 (VIOS) 共享的乙太網適配器
LPAR 配置
最小內存:256 MB
目標內存:32 GB
最大內存:64 GB
最少處理器數:8
目標處理器數:8
最大處理器數:32
處理模式:專用
專用內存
虛擬乙太網適配器(通過 VIOS 建立)
適配器 ID:2
VLAN ID:1
需要此適配器來激活虛擬伺服器:已選擇
以下是我運行的其他一些命令:
# ppc64_cpu --frequency
min: 3.56 GHz (cpu 28)
max: 3.56 GHz (cpu 4)
avg: 3.56 GHz
# ppc64_cpu --cores-present
Number of cores present = 8
# sysctl.conf
kernel.sem = 250 32000 32 12288
使用 toolchain 構建應用程序
通常,構建開源發行版的過程是一個迭代過程。如果您很幸運的話,該過程可能已構建完成。不幸的是,因為大多數開源發行版都構建於 x86 伺服器之上,所以在嘗試為不同架構(比如 IBM Power 架構)構建它們時可能遇到問題。
如果在 Power 上構建開源包時遇到問題,只需在互聯網上搜索類似情形,查看這些已報告的問題是否與您的經歷密切相關。如果是相關的,那麼在大多數情況下,您可以找到如何解決該問題的建議。
對我而言,盡管為配置腳本選擇正確參數後,postgresql 很好地構建完成了,但 apache httpd 沒那麼幸運。接下來的幾節將介紹為 Power 架構構建 apache httpd 所需的修復程序。
交叉編譯器經驗
編寫本文時,我使用的交叉編譯器版本是一個僅供 IBM 內部使用的版本,它專為修復我在測試期間遇到的一個錯誤而構建。讀者可以下載 AT 7.0-5 版,它是最新的交叉編譯器(在發表本文時),擁有接下來的幾段中描述的錯誤的修復程序。
在我嘗試交叉編譯 apr-1.5.1 源代碼發行版時,我看到了以下編譯器消息。
"sorry - this program has been built without plugin support"
按照我在互聯網上搜索可能的幫助和解決方案的建議,我找到多個鏈接提到編譯器需要使用 「plugin enabled」 選項來構建。我向 toolchain 支持小組報告了此問題,toolchain 維護人員很快就回復了我,為我提供了一個使用 plugin enabled 選項構建的修改版本。請注意,toolchain 的交叉編譯器和原生編譯器版本都需要使用 plugin enabled 選項構建。我能夠在獲得擁有該修復程序的 toolchain 版本後繼續工作。
這是我使用 PowerLinux toolchain 的第一次經歷。
交叉編譯 httpd 2.4.3
要交叉編譯 Apache httpd,需要使用另外 3 個包。它們是:apr、apr-util 和 pcre。找到下載最新包的位置後,開始使用 toolchain 交叉編譯器在 x86 伺服器上構建它們。
我構建 apr-1.5.1 時遇到的問題是構建 gen_test_char.o 模塊。請參閱 ASF Bugzilla – 錯誤 51257 了解有關的更多細節。我修改了 Makefile.in 文件(如下所示)並運行 buildconf 腳本,以便將更改包含在配置腳本中。
對 Makefile.in 的修改如下所示:
[root@stgisv240 apr-1.5.1]# diff -u Makefile.in ../../apr-1.5.1/Makefile.in
--- Makefile.in 2014-03-17 10:10:26.000000000 -0500
+++ ../../apr-1.5.1/Makefile.in 2014-07-03 13:36:11.125013781 -0500
@@ -46,7 +46,6 @@
CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs build/apr_rules.out tools/gen_test_char@EXEEXT@ - tools/gen_test_char.o tools/gen_test_char.lo \
include/private/apr_escape_test_char.h
DISTCLEAN_TARGETS = config.cache config.log config.status include/apr.h include/arch/unix/apr_private.h @@ -132,10 +131,9 @@
make_tools_dir:
$(APR_MKDIR) tools
-OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)
-tools/gen_test_char.lo: make_tools_dir
-tools/gen_test_char@EXEEXT@:$(OBJECTS_gen_test_char)
- $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
+tools/gen_test_char@EXEEXT@: make_tools_dir
+tools/gen_test_char@EXEEXT@: tools/gen_test_char.c
+ $(BUILD_CC) $(CFLAGS_FOR_BUILD) $< -o $@
include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@
$(APR_MKDIR) include/private
修改 Makefile.in 文件後,我運行 buildconf 來創建了一個新配置腳本。下一段將介紹用於配置腳本的參數和變數。順便說一下,我是根據其他嘗試在其他平台(比如 ARM)上交叉編譯 Apache httpd 及其組件的開發人員的建議,為配置腳本選擇配置參數的。
以下是我在 x86 伺服器上運行 apr-1.5.1 組件的配置腳本時,使用的參數和環境變數。
# Config script using Power Linux toolchain on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
BUILD_CC=gcc make install
我在 Power 伺服器上了略加修改的相同發行版。請注意,用於 Power 伺服器的 PowerLinux toolchain 使用了具有類似命名的可執行程序,比如從原生 cpp 和 binutils 包安裝的 cpp 和 ld。修改腳本中的 CPP 和 LD 變數,如下所示。確保 Power toolchain 的路徑首先傳入您的 PATH 環境中。
以下是我在 Power 伺服器上運行 apr-1.5.1 的配置腳本時使用的參數和環境變數。
# Config script using PowerLinux toolchain on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp # Note the difference
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld # Note the difference
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
ac_cv_struct_rlimit=yes
BUILD_CC=gcc make install
以下是我在 x86 伺服器上運行 apr-util-1.5.3 組件的配置腳本時使用的參數和環境變數。
# Configure script for apr-util-1.5.3 on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 Power 伺服器上運行 apr-util-1.5.3 組件的配置腳本時使用的參數和環境變數。
# Configure script for apr-util-1.5.3 on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 x86 伺服器上運行 httpd 組件的配置腳本時使用的參數和環境變數。
# Configure script for httpd 2.4.3 on x86
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no --with-
pcre=/tmp/usr/local/bin/pcre-config --with-apr=/tmp/usr/local/apr --with-mpm=worker--
with-apr-util=/tmp/usr/local/apr/bin/apu-1-config
以下是我在 Power 伺服器上運行 httpd 組件的配置腳本時使用的參數和環境變數。
# Configure script for httpd 2.4.3 on Power
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
#ASCPP=powerpc-apm-linux-gnu-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
#CXXCPP=powerpc-apm-linux-gnu-cpp
CXX=powerpc64-linux-c++
LD=/opt/at7.0-5-rc1/bin/ld
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no--with-
pcre=/home/usr/local/bin/pcre-config --with-apr=/home/usr/local/apr --with-mpm=worker--
with-apr-util=/home/usr/local/apr/bin/apu-1-config
交叉編譯 PostgreSQL 9.4.3
不同於之前構建 httpd 所需的源代碼發行版,我在交叉編譯 PostgreSQL 時未遇到問題。PostgreSQL 是使用以下配置腳本來構建的。
以下是我在 x86 伺服器上運行 PostgresSQL 的配置腳本時使用的參數和環境變數。
# Configure script for postgresql-9.3.4 on x86
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
D=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=powerpc64-linux --without-readline --without-zlib
與 Apache 配置腳本一樣,您可以注意到針對 Power 伺服器 toolchain 使用了具有類似命名的可執行程序,比如從原生 cpp和 binutils 包安裝的 cpp 和 ld。修改腳本中的 CPP 和 LD 變數,如下所示。確保 toolchain 的路徑首先傳入您的 PATH 環境中。
以下是我在 Power 伺服器上運行 PostgresSQL 的配置腳本時使用的參數和環境變數。
# Configure script for postgresql-9.3.4 on Power
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=powerpc64-linux --without-readline --without-zlib
結束語
toolchain 交叉編譯器的實際價值在於,開發人員可在他們熟悉的開發平台上(在大多數情況下是 x86)編譯和構建 Power Architecture 應用程序。從我們的用例中可以看到,toolchain 可生成像原生編譯的應用程序一樣高效地執行的二進制可執行程序和庫。而且,交叉編譯的庫與原生編譯的應用程序兼容。最後但同樣重要的是,交叉編譯的應用程序可在本地調試以及使用 gdb 調試器遠程調試。
PowerLinux toolchain 與在 x86 平台上使用原生 Linux toolchain 沒什麼不同。希望本文能讓讀者很好地了解 PowerLinux toolchain 的特性和功能。
⑹ Linux系統完整性監控開源軟體推薦
一、在PC機Linux上安裝合適的交叉編譯工具鏈。二、開源庫的移植,三、開源應用程序的移植,就完成了,加入源文件,注意包含頭文件就可以重新編譯了。
⑺ 我真心要學好LINUX,請問如何學好
隨著Linux應用的擴展許多朋友開始接觸Linux,根據學習Windwos的經驗往往有一些茫然的感覺:不知從何處開始學起。這里介紹學習Linux的一些建議。
一、從基礎開始: 常常有些朋友在Linux論壇問一些問題,不過,其中大多數的問題都是很基礎的。例如:為什麼我使用一個命令的時候,系統告訴我找不到該目錄,我要如何限制使用者的許可權等問題,這些問題其實都不是很難的,只要了解了 Linux 的基礎之後,應該就可以很輕易的解決掉這方面的問題。而有些朋友們常常一接觸Linux 就是希望構架網站,根本沒有想到要先了解一下Linux 的基礎。這是相當困難的。
二、Linux命令是必須學習 雖然Linux桌面應用發展很快,但是命令在Linux中依然有很強的生命力。Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平這個原理是不會變的,Linux命令有許多強大的功能:從簡單的磁碟操作、文件存取、到進行復雜的多媒體圖象和流媒體文件的製作。舉一個例子:Linux的常用命令find,察看man文檔,初學者一定會覺得太復雜而不原意用,但是你一旦學會就愛不釋手.它的功能實在太強了,在配合exec參數或者通過管道重定向到xargs命令和grep命令,可以完成非常復雜的操作,如果同樣的操作用圖形界面的工具來完成,恐怕要多花十幾陪的時間. 不同版本的Linux命令數量不一樣,這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們在系統中的作用分成幾個部分介紹給大家,通過這些基礎命令的學習我們可以進一步理解Linux系統: 安裝和登錄命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh 文件處理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln 系統管理相關命令: df、 top、 free、 quota 、at、 lp、 adser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last 網路操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup 系統安全相關命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
三、選擇一本好的工具書 工具書對於學習者而言是相當重要的。一本錯誤觀念的工具書卻會讓新手整個誤入歧途。目前國內關於Linux的書籍有很多不過精品的不多,筆者強烈建議閱讀影印本的「O'Reilly原版Linux圖書http://www.oreilly.com.cn/ 」,而且出版社還提供了一個非常好的路線圖:http://www.oreilly.com.cn/guide/guide_linux.php。
四、選擇一個適合你的Linux發行版本 目前全球有超過1百多個Linux發行版本,在國內也能找到十幾個常見版本。如何選擇請根據你的需求和能力,Redhat Linux 和Debian Linux是網路管理員的理想選擇。對於英語不是很好的讀者紅旗Linux、中標Linux這些中文版本比較適合。現在一些Linux網站有一些Linux版本的免費下載,這里要說的是並不適合Linux初學者。
五、 養成在命令行下工作: 一定要養成在命令行下工作的習慣,要知道X-window只是運行在命令行模式下的一個應用程序。在命令行下學習雖然一開始進度較慢,但是熟悉後,您未來的學習之路將是以指數增加的方式增長的。從網管員來說,命令行實際上就是規則,它總是有效的,同時也是靈活的。即使是通過一條緩慢的數據機線路,它也能操縱幾千公里以外地遠程系統。
六、 選擇一個適合你的Linux社區; 隨著Linux應用的擴展,出現了不少Linux社區。其中有一些非常優秀的社區:www.linuxforum.net(國內最高水平GNU站點)、http://www.chinaunix.net/ (中國最大的Unix技術社區),但是這幾個論壇往往是Linux高手的舞台,如果在探討高級技巧的論壇張貼非常初級的問題經常會沒有結果。
七、勤於實踐: 要增加自己Linux 的技能,只有通過實踐來實現了。所以,趕快找一部計算機,趕快安裝一個 Linux 發行版本,然後進入精彩的Linux世界。相信對於你自己的 Linux 能力必然大有斬獲。此外,人腦不像計算機的硬碟一樣,除非硬碟壞掉了或者是資料被你抹掉了,否則儲存的資料將永遠而且立刻的記憶在硬碟中。在人類記憶的曲線中,你必須要不斷的重復練習才會將一件事情記得比較熟。同樣的,學習 Linux 也一樣,如果你無法經常學習的話,學了後面的,前面的忘了。你對Linux命令熟悉後你可以開始搭建一個小的Linux網路,這是最好的實踐方法。Linux是網路的代名詞,Linux網路服務功能非常強大,不論是郵件伺服器、Web伺服器、DNS伺服器等都非常完善。當然你不需搭建所有服務,可以慢慢來。需要說明的是這個Linux網路對於初學者有兩三台計算機即可,其中一台計算機最好安裝Windows系統。自己多動手,不要非要等著別人幫你解決問題。
八、 如何得到聯機幫助 和私有操作系統不同,各個Linux的發行版本的技術支持時間都較短,這對於Linux初學者是往往不夠的。其實當你安裝了一個完整的Linux系統後其中已經包含了一個強大的幫助,只是可能你還沒有發現和使用它們的技巧。
1. 主流Linux發行版都自帶非常詳細的文檔(包括手冊頁和FAQ),從系統安裝到系統安全,針對不同層次的人的詳盡文檔,仔細閱讀文檔後40%問題都可在此解決。
2. 查閱經典工具書和Howto,特別是Howto是全球數以萬計的Linux、Unix的經驗總結非常有參考價值通常40%的問題同樣可以解決。
九、在Linux論壇獲取幫助 如果上面的措施沒有解決問題,此時你就需要Linux社區的幫助了。Linux的使用者一般都是專業人士,他們有著很好的電腦背景且願意協助他人,Linux高手更具有鼓勵新手的文化精神。如何在Linux社區獲得幫助,需要說明的是你要有周全的思考,准備好你的問題,不要草率的發問,否則只會得到到草率的回答或者根本得 不到任何答案。越表現出在尋求幫助前為解決問題付出的努力,你越能得到實質性的幫助。最好先搜尋一下論壇是否有您需要的文章。這樣可以獲得事半功倍的效果。 下面筆者在論壇看到的一個好問題:「安裝紅旗4.0 後,系統紫光輸入法自帶的雙拼方案和我的習慣不一樣,如何自定義雙拼方案解決?謝謝?」這個問題很簡練,筆者五分鍾後就給出了解決方法:「首先備份原文件到其他目錄,然後刪掉/usr/local/unispim/unispimsp.ksc,編輯/usr/local/unispim/unispimsp.ini ,最後重啟動計算機,生成新的unispimsp.ksc」另外得到回復後如果問題解決,向幫助過你的人發個說明,讓他們知道問題是怎樣解決的,這種補充有助於他人在郵件列表/新聞組/論壇中搜索對你有過幫助的完整解決方案,這可能對他們也很有用。 下面看看一個讓人無法回答的問題:「救命各位高手,向你們請教一些問題:如何在Linux下配製HTTP、FTP、Samba、DNS、DHCP、Sendmail伺服器,謝謝」 這樣的問題我想即使Linux高手也很難快速准確精練的回答你。 你需要提供精確有效的信息。這並不是要求你簡單的把成噸的出錯代碼或者數據完全轉儲摘錄到你的提問中。如果你有龐大而復雜的測試條件,盡量把它剪裁得越小越好。可能你會遇到這種情況,對於一個問題會出現不同內容回答,這時你需要通過實踐來驗證。另外把這個問題放在其他Linux社區請求幫助也是一種選擇。如果得不到答案,請不要以為我們覺得無法幫助你。有時只是看到你問題的人不知道答案罷了。這時換一個社區是不錯的選擇。 另外發問的時候一定要注意到某些禮節。因為Linux社區是一個鬆散的組織、也不承擔回復每個帖子的義務。它不是技術支持。
十.用Unix思維學習Linux Linux是參照Unix思想設計的,理解掌握Linux必須按照Unix思維來進行。思想性的轉變比暫時性的技術提高更有用,因為他能幫助你加快學習速度。
十一.學習專業英文 如果你想深入學習Linux,看不懂因為文檔實在是太難了。寫的最好的,最全面的文檔都是英語寫的,最先發布的技術信息也都是用英語寫的。即便是非英語國家的人發布技術文檔,也都首先翻譯成英語在國際學術雜志和網路上發表。安裝一個新的軟體時先看README,再看INSTALL然後看FAQ,最後才動手安裝,這樣遇到問題就知道為什麼。如果說明文檔不看,結果出了問題再去論壇來找答案反而浪費時間。 11.最後是Linux學習的路線圖:
1. 掌握至少50個以上的常用命令。
2. 熟悉Gnome/KDE等X-windows桌面環境操作 。
3. 掌握.tgz、.rpm等軟體包的常用安裝方法
4. 學習添加外設,安裝設備驅動程序(比如網卡)
5. 熟悉Grub/Lilo引導器及簡單的修復操作 。
6. 熟悉Linux文件系統 和目錄結構。
7. 掌握vi,gcc,gdb等常用編輯器,編譯器,調試器 。
8. 理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。
9. 學習Linux環境下的組網。 以上是筆者學習Linux一些經驗,希望對你有些幫助。
一個LINUX高手寫給初學者的話
http://linux.bokee.com/4925610.html
我也在學LINUX 希望這些對你有點幫助
⑻ Linux C編程從初學到精通的目 錄
第1部分 基礎篇
第1章 Linux系統概述 1
1.1 什麼是Linux 2
1.2 Linux系統特點及主要功能 2
1.2.1 Linux系統特點 3
1.2.2 Linux系統的主要功能 3
1.3 Linux的內核版本和發行版本 5
1.4 系統的安裝 6
1.4.1 系統安裝前的准備工作 6
1.4.2 從光碟安裝Linux 6
1.4.3 從硬碟安裝Linux 22
1.4.4 在虛擬機下安裝Linux 22
1.5 Shell的使用 27
1.5.1 Shell簡介 27
1.5.2 常見Shell的種類 28
1.5.3 Shell的簡單使用 29
1.5.4 通配符 30
1.5.5 引號 31
1.5.6 注釋符 33
1.6 Linux常用命令 33
1.6.1 與目錄相關的命令 33
1.6.2 與文件相關的命令 34
1.6.3 與網路服務相關的命令 35
1.7 本章小結 35
實戰演練 36
第2章 C語言編程基礎 37
2.1 C語言的歷史背景 38
2.2 C語言的特點 38
2.3 C語言的基本數據類型 39
2.3.1 整型 39
2.3.2 實型 40
2.3.3 字元型 41
2.4 運算符與表達式 43
2.4.1 算術運算符與算術表達式 43
2.4.2 賦值運算符與賦值表達式 44
2.4.3 逗號運算符與逗號表達式 45
2.5 C程序的3種基本結構 46
2.5.1 順序結構 46
2.5.2 選擇結構 47
2.5.3 循環結構 51
2.6 C語言中的數據輸入與輸出 54
2.6.1 字元輸出函數putchar 54
2.6.2 字元輸入函數getchar 54
2.6.3 格式輸出函數printf 54
2.6.4 格式輸入函數scanf 56
2.7 函數 57
2.7.1 函數的定義 57
2.7.2 函數的調用 58
2.7.3 變數的存儲類別 59
2.8 數組 62
2.8.1 一維數組的定義和使用 63
2.8.2 二維數組的定義和使用 64
2.8.3 字元數組和字元串 65
2.8.4 常用字元串處理函數 66
2.9 指針 69
2.9.1 地址和指針 69
2.9.2 指針的定義和使用 70
2.9.3 數組與指針 71
2.9.4 字元串與指針 72
2.9.5 指向函數的指針 72
2.10 結構體和共用體 73
2.10.1 定義和引用結構體 73
2.10.2 結構體數組 74
2.10.3 指向結構體的指針 74
2.10.4 共用體 75
2.10.5 使用typedef定義類型 77
2.11 鏈表 77
2.11.1 鏈表概述 77
2.11.2 建立動態單向鏈表 78
2.11.3 單向鏈表的輸出 80
2.11.4 對單向鏈表的刪除操作 80
2.11.5 對單向鏈表的插入操作 81
2.11.6 循環鏈表 82
2.11.7 雙向鏈表 82
2.12 位運算符和位運算 83
2.12.1 「按位與」運算符(&) 84
2.12.2 「按位或」運算符(|) 84
2.12.3 「取反」運算符(~) 84
2.12.4 「異或」運算符(^) 84
2.12.5 移位運算符(<<和>>) 85
2.12.6 位域 85
2.13 C語言預處理命令 86
2.13.1 宏定義 86
2.13.2 文件包含 87
2.13.3 條件編譯 88
2.13.4 #error等其他常用預處理命令 89
2.14 本章小結 89
實戰演練 89
第3章 vi與Emacs編輯器 91
3.1 vi的使用 92
3.1.1 啟動與退出vi 92
3.1.2 vi的命令行模式 93
3.1.3 vi的插入模式 96
3.1.4 vi的底行模式 96
3.2 vi使用實例 97
3.3 Emacs的使用 100
3.3.1 啟動與退出Emacs 101
3.3.2 Emacs下的基本操作 102
3.4 Emacs使用實例 107
3.5 本章小結 109
實戰演練 109
第4章 gcc編譯器與gdb調試器 110
4.1 gcc編譯器簡介 111
4.2 如何使用gcc 112
4.2.1 gcc編譯初步 112
4.2.2 警告提示功能 114
4.2.3 優化gcc 116
4.2.4 連接庫 119
4.2.5 同時編譯多個源程序 120
4.2.6 管道 120
4.2.7 調試選項 121
4.3 gdb調試器 122
4.3.1 gdb簡介 122
4.3.2 gdb常用命令 123
4.3.3 gdb調試初步 124
4.4 gdb的使用詳解 126
4.4.1 調用gdb 127
4.4.2 使用斷點 127
4.4.3 查看運行時數據 129
4.4.4 查看源程序 133
4.4.5 改變程序的執行 135
4.5 xxgdb調試器簡介 138
4.6 本章小結 139
實戰演練 139
第5章 make的使用和Makefile的編寫 141
5.1 什麼是make 142
5.1.1 make機制概述 142
5.1.2 make與Makefile的關系 144
5.2 Makefile的書寫規則 147
5.2.1 Makefile的基本語法規則 148
5.2.2 在規則中使用通配符 149
5.2.3 偽目標 149
5.2.4 多目標 151
5.2.5 自動生成依賴性 151
5.3 Makefile的命令 152
5.4 變數 154
5.4.1 變數的基礎 154
5.4.2 賦值變數 154
5.4.3 define關鍵字 156
5.4.4 override指示符 156
5.4.5 目標變數和模式變數 157
5.5 常用函數調用 158
5.5.1 字元串處理函數 158
5.5.2 文件名操作函數 162
5.5.3 循環函數 164
5.5.4 條件判斷函數 165
5.5.5 其他常用函數 166
5.6 隱式規則 168
5.6.1 隱式規則舉例 168
5.6.2 隱式規則中的變數 169
5.6.3 使用模式規則 170
5.7 本章小結 173
實戰演練 173
第2部分 提高篇
第6章 文件I/O操作 174
6.1 Linux文件系統簡介 175
6.1.1 Linux的文件系統結構 175
6.1.2 文件類型 176
6.1.3 文件訪問許可權 179
6.2 基於文件描述符的I/O操作 179
6.2.1 文件描述符 180
6.2.2 標准輸入、標准輸出和標准出錯 180
6.2.3 文件重定向 181
6.2.4 文件的創建、打開與關閉 182
6.2.5 文件的定位 186
6.2.6 文件的讀寫 188
6.3 文件的屬性操作 192
6.3.1 改變文件訪問許可權 192
6.3.2 改變文件所有者 193
6.3.3 重命名 193
6.3.4 修改文件長度 194
6.4 文件的其他操作 195
6.4.1 stat、fstat和lstat函數 195
6.4.2 p和p2函數 196
6.4.3 fcntl函數 197
6.4.4 sync和fsync函數 197
6.5 特殊文件的操作 198
6.5.1 目錄文件的操作 198
6.5.2 鏈接文件的操作 201
6.5.3 管道文件的操作 204
6.5.4 設備文件 204
6.6 本章小結 205
實戰演練 205
第7章 基於流的I/O操作 206
7.1 流與緩存 207
7.1.1 流和FILE對象 207
7.1.2 標准輸入、標准輸出和標准出錯 207
7.1.3 緩存 207
7.1.4 對緩存的操作 210
7.2 流的打開與關閉 212
7.2.1 流的打開 212
7.2.2 流的關閉 214
7.2.3 流關閉前的工作 216
7.3 流的讀寫 216
7.3.1 基於字元的I/O 217
7.3.2 基於行的I/O 220
7.3.3 直接I/O 222
7.3.4 格式化I/O 224
7.4 本章小結 226
實戰演練 227
第8章 進程式控制制 228
8.1 進程的基本概念 229
8.1.1 Linux進程簡介 229
8.1.2 進程與作業 230
8.1.3 進程標識 230
8.2 進程式控制制的相關函數 232
8.2.1 fork和vfork函數 232
8.2.2 exec函數 237
8.2.3 exit和_exit函數 242
8.2.4 wait和waitpid函數 245
8.2.5 進程的一生 251
8.2.6 用戶ID和組ID 251
8.2.7 system函數 253
8.3 多個進程間的關系 255
8.3.1 進程組 255
8.3.2 會話期 256
8.3.3 控制終端 257
8.4 本章小結 259
實戰演練 259
第9章 信號 260
9.1 Linux信號簡介 261
9.1.1 信號的基本概念 261
9.1.2 信號處理機制 265
9.2 信號操作的相關函數 267
9.2.1 信號的處理 267
9.2.2 信號的發送 274
9.2.3 信號的阻塞 282
9.2.4 計時器與信號 284
9.3 本章小結 286
實戰演練 287
第10章 進程間通信 288
10.1 進程間通信簡介 289
10.2 管道 290
10.2.1 管道的概念 290
10.2.2 管道的創建與關閉 291
10.2.3 管道的讀寫 292
10.3 命名管道 297
10.3.1 命名管道的概念 297
10.3.2 命名管道的創建 297
10.3.3 命名管道的讀寫 299
10.4 消息隊列 303
10.4.1 消息隊列的概念 303
10.4.2 消息隊列的創建與打開 305
10.4.3 消息隊列的讀寫 306
10.4.4 獲得或設置消息隊列屬性 308
10.5 共享內存 312
10.5.1 共享內存的概念 312
10.5.2 共享內存的相關操作 313
10.6 信號量 318
10.6.1 信號量的概念 319
10.6.2 信號量集的相關操作 320
10.7 本章小結 325
實戰演練 326
第11章 網路編程 327
11.1 網路編程的基礎知識 328
11.1.1 計算機網路體系結構 328
11.1.2 傳輸控制協議TCP 333
11.1.3 用戶數據報協議UDP 335
11.1.4 客戶機/伺服器模式 336
11.2 套介面編程基礎 336
11.2.1 什麼是套介面 337
11.2.2 埠號的概念 338
11.2.3 套介面的數據結構 338
11.2.4 基本函數 340
11.3 TCP套介面編程 343
11.3.1 TCP套介面通信工作流程 343
11.3.2 TCP套介面Client/Server程序實例 356
11.4 UDP套介面編程 360
11.4.1 UDP套介面通信工作流程 360
11.4.2 UDP套介面Client/Server程序實例 362
11.5 原始套介面編程 365
11.5.1 原始套介面的創建 365
11.5.2 原始套介面程序實例 365
11.6 本章小結 376
實戰演練 376
第12章 Linux圖形界面編程 377
12.1 Linux下的圖形界面編程簡介 378
12.1.1 Qt簡介 378
12.1.2 GTK+簡介 378
12.2 界面基本元件 381
12.2.1 一個簡單的例子 381
12.2.2 窗口 383
12.2.3 標簽 385
12.2.4 按鈕 386
12.2.5 文本框 387
12.3 界面布局元件 389
12.3.1 表格 390
12.3.2 框 393
12.3.3 窗格 395
12.4 其他常用元件 398
12.4.1 進度條、微調按鈕、組合框 398
12.4.2 單選按鈕、復選按鈕 402
12.4.3 下拉菜單 404
12.5 信號與回調函數 406
12.6 本章小結 409
實戰演練 409
第3部分 實戰篇
第13章 設計Linux下的計算器 411
13.1 軟體功能分析 412
13.2 程序模塊的劃分 413
13.3 軟體的具體實現 415
13.3.1 頭文件 415
13.3.2 十六進制界面顯示函數 416
13.3.3 十進制界面顯示函數 417
13.3.4 八進制界面顯示函數 418
13.3.5 二進制界面顯示函數 419
13.3.6 進制間轉換函數 420
13.3.7 信號處理模塊 423
13.3.8 主函數 432
13.4 軟體使用效果演示 438
13.5 本章小結 439
第14章 Linux平台下聊天軟體的設計 440
14.1 軟體功能概述 441
14.1.1 伺服器端功能需求 441
14.1.2 客戶端功能需求 442
14.1.3 錯誤處理需求 442
14.2 Glade集成開發工具簡介 443
14.3 軟體功能模塊劃分 444
14.3.1 伺服器功能模塊劃分 444
14.3.2 客戶端功能模塊劃分 445
14.3.3 消息標識的定義 445
14.3.4 消息結構體的設計 446
14.4 伺服器程序的具體實現 447
14.4.1 伺服器消息處理流程 447
14.4.2 伺服器主要函數和變數 448
14.4.3 伺服器消息處理模塊的設計與實現 449
14.4.4 伺服器數據存儲的方法 450
14.4.5 用戶注冊流程 450
14.5 客戶端程序的具體實現 451
14.5.1 客戶端操作流程 451
14.5.2 客戶端發送和接收消息流程 451
14.5.3 客戶端主要函數和變數 452
14.5.4 客戶端功能模塊的設計與實現 453
14.6 聊天軟體使用效果演示 455
14.7 本章小結 459
第15章 Linux遠程管理工具的設計 460
15.1 軟體功能概述 461
15.1.1 Webmin簡介 461
15.1.2 軟體總體設計 461
15.2 伺服器端程序設計 463
15.2.1 伺服器端工作流程 463
15.2.2 系統用戶管理操作 464
15.2.3 系統用戶組的管理操作 466
15.2.4 系統服務啟動管理 468
15.2.5 DNS管理操作 469
15.2.6 Apache服務管理操作 471
15.2.7 FTP服務管理操作 474
15.3 客戶端程序 475
15.3.1 連接界面 475
15.3.2 主界面 477
15.4 本章小結 479
第16章 Linux下簡易防火牆軟體的設計 480
16.1 Netfilter基礎 481
16.1.1 什麼是Netfilter 481
16.1.2 Netfilter的HOOK機制 482
16.1.3 HOOK的調用 485
16.1.4 HOOK的實現 486
16.1.5 IPTables簡介 488
16.1.6 Netfilter可以實現的控制功能 489
16.2 軟體設計概述 491
16.2.1 軟體整體框架 491
16.2.2 管理端的設計 492
16.2.3 控制端的設計 493
16.3 用Netfilter設計控制端功能模塊 495
16.3.1 ICMP管理控制模塊 495
16.3.2 FTP管理控制模塊 497
16.3.3 HTTP管理控制模塊 499
16.3.4 模塊的編譯、載入與卸載 499
16.4 軟體功能測試 501
16.5 本章小結 503
第17章 基於Linux的嵌入式家庭網關遠程交互操作平台的設計 504
17.1 嵌入式技術簡介 505
17.1.1 嵌入式系統的概念 505
17.1.2 嵌入式操作系統 506
17.1.3 嵌入式處理器 507
17.2 家庭網關的概念及其網路體系結構 509
17.2.1 智能家庭網路的概念 509
17.2.2 家庭網關的遠程交互操作技術簡介 510
17.2.3 嵌入式家庭網關的網路體系結構 510
17.3 嵌入式家庭網關的開發平台 511
17.3.1 S3C2410微處理器簡介 511
17.3.2 交叉編譯環境的建立 513
17.4 遠程交互平台的設計 515
17.4.1 應用軟體的開發模式 515
17.4.2 嵌入式Web伺服器 516
17.4.3 通用網關介面CGI 519
17.5 Linux下軟體模塊的具體實現 520
17.5.1 登錄驗證模塊 521
17.5.2 串口通信模塊 521
17.5.3 中央空調控制模塊 522
17.5.4 智能水表數據採集模塊 528
17.5.5 試驗結果 528
17.6 本章小結 529
⑼ 安卓JAVA模擬器哪兒有
目前的JAVA模擬器在安卓手機上都不能很好的運行。
⑽ 請問Open webOS是什麼 和現在惠普的webos系統有什麼聯系的是一樣的意思嗎
惠普收購了Palm,從它那裡繼承了WebOS,搞不動了就將其開源了,就是現在的Open WebOS。