Time of Update: 2018-12-03
我們自己可以編譯製作一個交叉編譯工具鏈(Cross-compile Toolchain)來用,但為了方便、穩定起見,我們大多數時候會去選擇成熟的第三方工具鏈。codesourcery的交叉工具鏈是很常見的一種,以ARM為例,我們可以從http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite處下載到最新的版本:Target OSDownloadEABISourcery G++ Lite 2010.09-
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
1、&& 方式:command1 && command2 如果command1執行成功,則執行command2-rw-rw-r-- 1 kevin kevin 0 9月 11 00:55 1.log[kevin@kevin test]$ ll總用量 4-rw-rw-r-- 1 kevin kevin 0 9月 11 00:55 1.log[kevin@kevin test]$ mv 1.log tmp.log && ls -l總用量 4
Time of Update: 2018-12-03
本文不是LINUX/UNIX命令手冊, 而是關於部分命令的慣用方法.catconcatenate files and print on the standard output.通常用於輸出某檔案的所有內容到標準輸出: 'cat file'findsearch for files in a directory hierarchy.尋找檔案.e.g. 假設某人上傳了一個中文名字的檔案(有可能顯示為亂碼), 現在要刪除這個檔案, 但是unix主機沒有中文IME, 該如何刪除呢?ubuntu 10.4.
Time of Update: 2018-12-03
Ubuntu上安裝和使用SSH網上有很多介紹在Ubuntu下開啟SSH服務的文章,但大多數介紹的方法測試後都不太理想,均不能實現遠程登入到Ubuntu上,最後分析原因是都沒有真正開啟ssh-server服務。最終成功的方法如下: Ubuntu 下安裝 OpenSSH Server 是無比輕鬆的一件事情,需要的命令只有一條: sudo apt-get install openssh-server (查看返回的結果,如果沒有出錯,則用putty、SecureCRT、SSH Secure
Time of Update: 2018-12-03
最近將一個Windows程式移植到Linux上,發現兩個作業系統對很多資料類型的命名方式區別很大,比如Windows下對於無符號資料類型一般用U+x的方式,像UINT、UCHAR、ULONG,而Linux上就要中規中矩,都是unsigned +x;另外,還有一些資料類型是Windows有,而Linux沒有的,像DWORD、HANDLE、LPSTR等等。於是我寫了一個Windows資料類型在Linux下進行轉換的標頭檔,貼在這裡,供大家學習與參考吧!/** windows2linux.hpp**
Time of Update: 2018-12-03
題記:今天看到一篇關於查看CPU和作業系統資訊的文章,轉過來和大家分享一下,O(∩_∩)O! 瞭解cpu架構
Time of Update: 2018-12-03
先將代碼貼出來,然後慢慢再解釋.@MakefileOBJS := server clientall: $(OBJS)server: msg_svr.c msg.h gcc -o $@ $^ -D_DEBUGclient: msg_client.c msg.hgcc -o $@ $^ -lpthreadclean:$(RM) $(OBJS)@msg.h#include <stdlib.h>#include <string.h>#include <stdio.h>
Time of Update: 2018-12-03
本程式主要是針對Linux IPC通訊初學者對Linux下訊息佇列通訊機制,多線程編程,字串處理,鏈表操作,訊號簡單處理等基本概念的練習。原理: 訊息佇列是System V支援一種IPC機制,通過類似鏈表的操作向一個FIFO裡通過msgsnd發送使用者自訂資料,進程可以通過msgrcv來接收指定類似mtype的資料,從而實現處理序間通訊。主要實現了以下功能:> 通過多個終端登入,不同終端上登入使用者實現私聊> 群聊> 查看線上使用者>
Time of Update: 2018-12-03
php 通用的調用 so的方法是使用dl()函數,但是在php5.3之後不再支援這種方法,僅支援靜態調用,使用dl() 動態調用的方法見: 引用頁1: http://tech.idv2.com/2007/07/06/use-local-so-in-php/感謝原作者提供的清晰明了的方法,但是我在5.3.1版本i中沒有通過,於是我找到了頁面: 引用頁2:
Time of Update: 2018-12-03
最近,一直在看書學習linux裝置驅動,從最簡單的字元裝置驅動入門,能夠對驅動的架構和各元素的功能有個宏觀的瞭解。下面詳細分析我寫的第一個字元裝置驅動,整理一些驅動的基礎知識,加深印象。先給出一些宏定義和全域變數:#define GLB_MEM_SIZE 0x1000#define HELLO_MAJOR 250#define MEM_CLEAR 0x1int hello_major = HELLO_MAJOR;struct globalmem_dev{ struct cdev
Time of Update: 2018-12-03
日前,在學習android的時候經常遇到XXXX節點,於是現在參考:http://blog.csdn.net/Bestrem_9/archive/2009/03/19/4004335.aspx(還有其他文獻)將節點的概念總結如下: 節點的概念是裝置管理需要的。 Linux
Time of Update: 2018-12-03
因工作需要,現需要學習linux裝置驅動,從最簡單的字元裝置驅動開始,把自己的學習點滴記錄下來,堅持自己去思考和總結。我為第一個hello world字元驅動程式寫的makefile如下所示:#KVERS = $(shell uname -r)ifneq ($(KERNELRELEASE),)obj-m += hello_world.o elseKERDIR
Time of Update: 2018-12-03
當執行make時,make會在當前的目錄下搜尋Makefile(or makefile) 這個文字檔,而 Makefile裡面則記錄了原始碼如何編譯的詳紳資訊! make 會自動地判別原始碼是否經過變動了,而自動更新執行檔通常軟體開發商都會寫一支偵測程式來偵測使用者的作業環境, 以及該作業環境是否有軟體開發商所需要的其他功能,該偵測程式偵測完畢後,就會自動地建立這個 Makefile 的規則檔案!通常這支偵測程式的檔案名稱為
Time of Update: 2018-12-03
http://wf66.com/page/20069/217573456C.htm在安裝和使用Linux的過程中,您必然會接觸到不少像hda1、ttyS0、eth1這樣的裝置名稱。的確,它們與平常Windows中的有很大差異,所以您有必要先瞭解一下。在Linux中,每個裝置必須在它的驅動程式控制下運行,驅動程式則與/dev目錄下的特殊檔案聯絡在一起,儘管這些檔案並不是真正的檔案,但在您選擇裝置或者操作裝置時都以這個檔案的名稱來代表這一裝置。這些裝置名稱的命名都是有規則的,我們逐一介紹各類裝置的名