2008年2月28日 星期四

Linux Shell腳本Ldd命令原理及使用方法

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終端測試一下,如下:

(1) export LD_TRACE_LOADED_OBJECTS=1

(2) 再執行任何的程式,如ls等,看看程式的運行結果

3、ldd顯示可執行模組的dependency的工作原理,其實質是通過ld-linux.so(elf動態庫的裝載

器)來實現的。我們知道,ld-linux.so模組會先於executable模組程式工作,並獲得控制權,因此當上述的那些環境變數被設置時,ld-linux.so選擇了顯示可執行模組的dependency。

4、實際上可以直接執行ld-linux.so模組,如:/lib/ld-linux.so.2 --list program(這相當於ldd program)

ldd命令使用方法(摘自ldd --help)


REF:http://hon0612.blogspot.com/2007/09/linux-shellldd.html

2008年2月26日 星期二

SVN 基本指令教學

SVN 基本功能:

Import: 將整個 project_directory 的資料 import 進 svn 裡面

  • svn import project_directory http://DOMAIN/svn_project
  • svn import project_directory file:///SVN_PATH/svn_project

Checkout: (checkout 可簡寫成 co), 將資料 checkout 回來

  • svn co http://SVN_PATH/svn_project
  • svn co file:///SVN_PATH/svn_project
  • svn co -r 12 file:///var/lib/svn/dev/projects # 出第12版的 projcets code

List: (list 可簡寫成 ls), 看上面有哪些檔案/資料

  • svn ls http://SVN_PATH/svn_project
  • svn ls file:///SVN_PATH/svn_project

Update: (update 可簡寫成 up), 將目前資訊更新成 SVN 線上最新版本.

  • SVN_CHECKOUT_DIR$ svn up
Commit: (commit 可簡寫成 ci), 將目前所做的修改 commit 回 svn
  • SVN_CHECKOUT_DIR$ svn ci
Status: (status 可簡寫成 st), 看目前檔案/結構 跟 SVN 線上的版本有哪些不同
  • SVN_CHECKOUT_DIR$ svn st
Add: 將此 檔案/目錄 新增進 svn
  • SVN_CHECKOUT_DIR$ svn add filename 或 svn add directory
MV: 改檔名, 並且此檔案之前紀錄還要繼續留下
  • SVN_CHECKOUT_DIR$ svn mv filename new_filename
Revert: 還原這次的修改, 回到前一版的檔案狀態(未 commit 前可用)
  • SVN_CHECKOUT_DIR$ svn revert [file | directory]

SVN 檔案狀態資訊:

  • ?: 此檔案不存在 SVN 裡面
  • A: 此次新增的檔案
  • C: 此檔案已經有人改過, 合併不成功, 需要人工介入
  • D: 此次移除的檔案
  • M: 此檔案有修改過
  • U: 此檔案有被更新過
REF:http://plog.longwin.com.tw/my_note-programming/2007/07/10/svn_tutorial_2007

2008年2月24日 星期日

Ubuntu's Runlevel

Ubuntu 不採用inittab 管理方式
而採用upstart
來啟用或停止
(但還是可以用inittab這種方式來設定)
Upstart 設定檔: /etc/event.d
Ubuntu Default Runlevel= 2
如何在commendline底下切換level
sudo init 0 進入runlevel 0 等於關機
sudo init 6 進入runlevel 6 重新開機
在每一個/etc/rcX.d/ X=0~6
S開頭的是開機會執行,後面數字為順序
K開頭的是依數字大小關閉程式 通常k開頭的只會在rc0.d or rc6.d
如果有k與s開頭 就會先把k開頭跑完在跑s開頭
可重建立一個
/etc/inittab 來測試:
id:2:initdefault: 2

REF:http://ku777.blogspot.com/2007/10/ubuntu-runlevel.html

2008年2月21日 星期四

Hello, world!

I am on the intarweb!

south park &harry potter

Lego 300

HDD/Network performance testing

*********************************
HDD
*********************************
1.hdparm
hdparm -Tt /dev/sda

2.The Flexible Filesystem Benchmark (FFSB)
http://sourceforge.net/projects/ffsb/
~/ tar xzvf ffsb-5.2.1.tar.gz
~/configure
To edit Makefile
CC=arm-linux-gcc
~/ make

*********************************
Network
*********************************
IxChariot(console/endpoint):
http://www.ixiacom.com/products/performance_applications/pa_display.php?skey=pa_ixchariot
http://www.ixiacom.com/support/endpoint_library/embedded_endpoints

2008年2月20日 星期三

vim +taglist

下載taglist:
http://vim.sourceforge.net/scripts/script.php?script_id=273
解開taglist.vim至~/.vim/plugin下

修改.vimrc的配置如下

” FOR Tlist
let Tlist_Ctags_Cmd = “/usr/local/bin/exctags” ” FOR BSD
let Tlist_Auto_Open=1 ” 開啟vim/gvim 的時自動打開 Tlist
let Tlist_Auto_Update=1 ” 自動更新目前的 tag 列表
let Tlist_Enable_Fold_Column=1
let Tlist_Sort_Type = “name” ” 顯示的 tag 排序方式:name/order
let Tlist_WinWidth = 30 ” Tlist 視窗的寬度
let Tlist_Show_One_File = 0 ” 是否只顯示目前文件的 tag
let Tlist_Exit_OnlyWindow = 1 ” 關閉打開的文件的同時,也關閉taglist視窗
let Tlist_Use_SingleClick = 1
map :Tlist: “按F8 自動打開Tlist
map :wincmd p “兩個視窗切換

REF:http://blog.johnpupu.tw/?p=125