2008年3月20日 星期四

Library 編譯參數免煩惱~好用的 pkg-config!

時常在編譯程式的時候,會遇到找不到某個 Library 的 *.h 的問題,這個時候就要派出 pkg-config 來大顯神通了~

pkg-config 是一個會記住 Library 相關使用參數的好用工具,你可以利用它來取得編譯參數與其他有用的資訊。

pkg-config 通常會放在 /usr/bin/pkg-config
而設定檔通常會放在 /usr/lib/pkgconfig/*.pc

要用到某個 Library 之前就去 /usr/lib/pkgconfig 底下找找看相關的名字吧。
因為有時候 Library 的設定檔名稱後面會帶有版本號碼,不去看看的話很難猜出來到底應該指定的 Library 名稱是什麼。



假設有一個 test.c 要用到 dbus 這個 Library,這時 Makefile 可以寫成這樣:

Makefile

CFLAGS := $(shell pkg-config --cflags dbus-1)
LDFLAGS := $(shell pkg-config --libs dbus-1)


CC = gcc
LIBS=


SRCS=bluez-client.c

all:demo

demo:$(SRCS:.cpp=.o)
$(CC) $(CFLAGS) $(LDFLAGS)-o $@ $^ $(LIBS)


clean:
-rm -f demo
-rm -f *.o

簡單的透過 pkg-config --cflags dbus-1 就可以取得 dbus 的 CFLAGS,透過 --libs 參數同樣也可以取得 LDFLAGS。

如此一來以後就不用再擔心不知道 Library 要下什麼參數才能使用了~


2008年3月5日 星期三

利用 sudo 在 root 擁有的資料夾中 mkdir

使用非 root 帳號最常遇到的問題就是:沒辦法在 root 擁有的資料夾中 mkdir。

但是我又時常需要做一些測試與設定的動作,因此在此記錄一下要怎麼樣利用 sudo 在 root 擁有的資料夾中 mkdir,並安全的的轉移資料夾權限給自己。



Step 1.
切換到需要 mkdir 的資料夾底下。



Step 2.
執行
sudo mkdir [新資料夾名稱]

例如
sudo mkdir work



Setp 3.
執行
sudo chown -R $USER [新資料夾名稱]

例如
sudo chown -R $USER work



Setp 4.
完成了,ls -al 一下,就可以看到 OWNER 變成自己摟。


自訂 Console 的文字顏色

有鑑於 Fedora 的 kconsole 每次預設的 資料夾 文字顯示顏色都是深藍字,而我又喜歡用黑底的 console,最後的結果就是每次都看不清楚資料夾名稱。

因此在這裡記錄一下要怎麼修改 console 底下文字顏色的方法。



Step 1.
編輯 /etc/DIR_COLORS.xterm

找到這一段:

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 00;34 # directory
LINK 00;36 # symbolic link
FIFO 40;33 # pipe
SOCK 00;35 # socket
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 01;05;37;41 # orphaned syminks
MISSING 01;05;37;41 # ... and the files they point to



Step 2.
把這一行:
DIR 00;34 # directory

改成這樣:
DIR 00;34;46 # directory


之後存檔~




Setp 3.
重新開啟一個 console,這時候就會看到,所有的資料夾變成 淺藍底色 + 深藍字 了~
也可以改成其他的顏色,或修改其他項目喔!




ps.如果修改 /etc/DIR_COLORS.xterm 沒有用,那就修改這個檔案 /etc/DIR_COLORS 。
傳說中 /etc/DIR_COLORS.xterm 是給 X Window 用的,/etc/DIR_COLORS 是文字模式用的。


免密碼 sudo,保平安又免麻煩!

自從我的耍寶同事 Derek 用 root 帳號在自己的 Linux 環境底下執行了一個「迷樣的 Script」,並將環境徹底的摧毀之後,我就開始瞭解 Mark 老大說的:「不要用 root 亂搞!」是什麼意思了...

於是,跟 Mark 老大請教了要怎麼樣使用 sudo 最方便,但又可以保平安的方法~

在這裡做個記錄跟分享~




Step 1.
編輯 /etc/passwd

第一行應該長得像這樣
root:x:0:0:root:/root:/bin/bash

把第一個 x 拿掉,變成這樣
root::0:0:root:/root:/bin/bash

最後存檔離開~



Step 2.
編輯 /etc/sudoers

找到這一行:
# %wheel All=(All) NOPASSWD: All

把前面的 # 拿掉。

一樣存檔離開~



Step 3.

編輯 /etc/group

找到這一行:
wheel:x:10:root

在後面加上你想要讓他可以使用 sudo 的帳號,記得用逗號分隔,變成這樣:
wheel:x:10:root,firch

依然存檔離開~




Setp 4.
開開心心的使用不用密碼的 sudo~




ps.還是要節制的使用 sudo,否則哪天習慣成自然的把 sudo 拿來砍掉自己的系統,可不要來找我!