Time of Update: 2018-12-03
linux下的進程通訊手段基本上是從Unix平台上的進程通訊手段繼承而來的。而對Unix發展做出重大貢獻的兩大主力AT&T的貝爾實驗室及BSD(加州大學伯克利分校的伯克利軟體發布中心)在處理序間通訊方面的側重點有所不同。前者對Unix早期的處理序間通訊手段進行了系統的改進和擴充,形成了“system V IPC”,通訊進程局限在單個電腦內;後者則跳過了該限制,形成了基於套介面(socket)的處理序間通訊機制。Linux則把兩者繼承了下來,示:示: 其中,最初Unix IPC包括:管道、
Time of Update: 2018-12-03
tar1) tar調用gzip gzip是GNU組織開發的一個壓縮程式,.gz結尾的檔案就是gzip壓縮的結果。與gzip 相對的解壓程式是gunzip。tar中使用-z這個參數來調用gzip。下面來舉例說明一下 : # tar -czf all.tar.gz *.jpg 這條命令是將所有.jpg的檔案打成一個tar包,並且將其用gzip壓縮,產生一個 gzip壓縮過的包,包名為all.tar.gz # tar -xzf all.tar.gz 這條命令是將上面產生的包解開。
Time of Update: 2018-12-03
查看記憶體資訊, cat /proc/meminfo, 同理查看cpu資訊, cat /proc/cpuinfo, 有時會有這樣疑問,比如4核究竟是2cpu*雙核呢,還是1cpu*四核呢?有一個簡單的方法: 有多少個processor,就有多少個core, 有多少個cpu, 就看最後一個processor的physical id+1舉個例:processor : 0vendor_id : GenuineIntelcpu family : 6model
Time of Update: 2018-12-03
主機:Windows 7旗艦版,VMware7.1.2,Fedora9編譯環境:arm-linux-gcc 4.4.3Linux版本:linux-2.6.32.2busybox版本:busybox-1.19.4目標板:友善之臂micro2440編譯使用核心模組的方法:編寫一個簡單的Linux核心模組Hello World,hello.c內容如下: #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE(
Time of Update: 2018-12-03
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <netinet/in.h>#include <net/if.h>#include <net/if_arp.h>#include
Time of Update: 2018-12-03
1.訊號的產生 Linux下的訊號可以類比於DOS下的INT或者是Windows下的事件。 訊號事件的發生有兩個來源:一個是硬體的原因(比如按下了鍵盤),一個是軟體的原因(比如使用系統函數或者是命令發出訊號)。 List all signal: #> man 7 signal2. 三種異常中斷訊號 2.1 SIGSEGV (Segment fault) 意味著指標所對應的地址是無效地址,沒有實體記憶體對應該地址 2.2 SIGTERM
Time of Update: 2018-12-03
1. 模組(驅動程式) 模組(module)是在核心空間啟動並執行程式,實際上是一種目標對象檔案,可以動態裝載到系統中作為核心的一部分運行。 Linux下對於一個硬體的驅動,可以有兩種方式: 1.1 直接載入到核心代碼 啟動核心時就會驅動此硬體裝置。 1.2 以模組方式載入 編譯產生一個.o檔案。當應用程式需要時再載入進核心空間運行。2. Linux系統的檔案類型 Linux檔案系統包括:
Time of Update: 2018-12-03
經過兩周的摸索,終於對Linux裝置驅動開發有了個初步的認識,下面對Linux裝置驅動開發環境的搭建做個小結,以方便自己以後查詢,同時也能給同道的初學者一點協助。剛接觸Linux裝置驅動時,初學者往往連如何編譯驅動程式都不懂,更別說編譯進核心或載入測試了。一般都是在網上找個最簡單的 helloworld驅動程式,然後嚴格按照網上所說的步驟編譯,結果卻得到一大堆見都沒見過的錯誤,更不要說根據錯誤資訊來解決問題了,很多人到這裡就
Time of Update: 2018-12-03
轉自http://hi.baidu.com/mychaoyue2011/blog/item/6df45895c3d63243d0135e01.html本報告分析Linux 2.6核心的調度策略及演算法。Linux核心支援多CPU,每個CPU執行類似的策略,但在必要時(例如CPU負載不平衡等時刻),還會進行更高層的CPU間調度,由此還會引出CPU間的同步等問題。為了簡化問題,此處僅討論單CPU的情況。Linux中的調度對象為task,此處仍稱做進程,每個task有如下五個狀態:1.
Time of Update: 2018-12-03
轉自http://hi.baidu.com/mychaoyue2011/blog/item/6df45895c3d63243d0135e01.html4 Linux核心調度策略與演算法分析 c = -1000;list_for_each(tmp, &runqueue_head) { /* 從runqueue中選擇一個最佳進程來運行 */ p = list_entry(tmp, struct task_struct, run_list); if (
Time of Update: 2018-12-03
1、首先ldd不是一個可執行程式,而只是一個shell指令碼 2、ldd能夠顯示可執行模組的dependency,其原理是通過設定一系列的環境變數,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。當LD_TRACE_LOADED_OBJECTS環境變數不為空白時,任何可執行程式在運行時,它都會只顯示模組的dependency,而程式並不真正執行。要不你可以在shell終端測試一下,如下:
Time of Update: 2018-12-03
轉自:http://www.zxbc.cn/html/20080712/60742.htmlInclude的header檔案,動態連結程式庫,系統定義,總共有下列來源指定gcc去那裡找。當初在編譯時間指定的(在~gcc/gcc/collect2.c:locatelib()寫在specs內的 ,內定的,這是當初compile gcc時寫在程式內的。後來用-D -I -L指定的gcc環境變數設定(編譯的時候)ld.so的環境變數(這是run
Time of Update: 2018-12-03
當我們的程式中有經常使用的模組,而且這種模組在其他程式中也會用到,這時按照軟體重用的思想,我們應該將它們產生庫,使得以後編程可以減少開發代碼量。這裡介紹命令ar,用來對庫操作。 1.ar基本用法 ar命令可以用來建立、修改庫,也可以從庫中提出單個模組。庫是一單獨的檔案,裡麵包含了按照特定的結構組織起來的其它的一些檔案(稱做此庫檔案的member)。原始檔案的內容、模式、時間戳記、屬主、組等屬性都保留在庫檔案中。 下面是ar命令的格式: ar
Time of Update: 2018-12-03
本文詳細的記錄了在 Linux 安裝Fortran編譯器的過程 1. 在瀏覽器中開啟 http://gcc.gnu.org/wiki/GFortranBinaries2. 下載Linux的2進位版本,我的Linux是Fedora16, x86-64,所以我選擇的是http://gcc.gnu.org/wiki/GFortranBinaries下的 64-bit AMD-compatible processors (x86_64, AMD64,Intel64, em64t) 2.1
Time of Update: 2018-12-03
Linux手機DIY.庫檔案專題.知識準備草木瓜轉抄 於 2006-11-9一、序 軟體移植過程中,Linux作業系統的庫檔案著實令人頭疼,這方面資料也比較少。通過一段時間搜尋查詢推敲,寫點總結吧,也算是有點成果。不過這篇內容大多都是抄的,這裡對原創作者表示深深的敬意~二、重要提示 為了方便更好的理解本文,提供下面鏈結。 全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg 相關的重要成果的:http://play.younet.
Time of Update: 2018-12-03
Linux手機DIY.夏新E600和飛利浦968的重大突破草木瓜 更新於 2006-10-24 下午一、序 夏新E600和飛利浦968終於在同一天取得了重大突破!皆可以執行自訂的Shell指令碼!在這樣還是要感謝那些無數次重啟試機的朋友們。 昨天無意翻到一個貼子,說得是Shell的解釋執行,忽然想到目前嘗試的Shell指令碼,全是想當然的用/bin/bash解釋運行,如果飛利浦968不存在這個可執行檔是絕對不可能啟動並執行。
Time of Update: 2018-12-03
Linux手機DIY.庫檔案專題.交叉編譯的浮點問題草木瓜 於 2006-11-9一、序 交叉編譯過程的浮點問題可畏老大難,各個gcc的版本相容性不一,所對應的patch效果差異又很大。這對構造不同於E680的E600編譯環境造成了很大麻煩,這裡我對嘗試的過程做下描述,以供參考,畢竟中文資料少得可憐。二、重要提示 為了方便更好的理解本文,提供下面鏈結。 全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg
Time of Update: 2018-12-03
Linux手機DIY.夏新E600和飛利浦968安裝包專題草木瓜
Time of Update: 2018-12-03
Linux手機DIY.構建統一安裝包草木瓜 於 2006-11-25一、序 因為夏新E600與飛利浦968差異比較大,所以有必要對安裝進行一次標準性的統一。subtle早在幾天前就針對目前安裝包的弊端,開發出新包。所以安裝包是在此基礎上,又重新考慮夏新E600和飛利浦968的系統特點和未來的軟體因素製作而成。
Time of Update: 2018-12-03
之前一直有這樣的需求,當時問到,也沒搜到方法,現在竟然既問到了,也搜到了,哎,世事真是不能強求啊! 在linux核心調試中,經常用到的列印函數呼叫堆疊的方法非常簡單,只需在需要查看堆棧的函數中加入:dump_stack();或 __backtrace();即可。 dump_stack()在~/kernel/ lib/Dump_stack.c中定義 void dump_stack(void){ printk(KERN_NOTICE "This architecture does not