%.o : %.cpp
$(CC) -o ...
這種寫法只有"當前目錄下"的.o檔才會使用這條rule
如果要把*.o放到obj/下的話
就得寫成
obj/%.o: %.cpp
$(CC) -o ...
這樣才找得到
另外可以在terminal下輸入make -p
來看到整個make的流程
2013年3月15日 星期五
[Makefile] add dependency
target1: d1
$(CC) -o ....
target1: d2 d3
target1: d4 d5
這樣寫的話
後面兩個都沒有實際執行任何東西
所以第一行會被解讀成
target1: d1 d2 d3 d4 d5
$(CC) -o ....
target1: d2 d3
target1: d4 d5
這樣寫的話
後面兩個都沒有實際執行任何東西
所以第一行會被解讀成
target1: d1 d2 d3 d4 d5
2013年3月14日 星期四
[Makefile] CFLAGS & CPPFLAGS
轉自 http://stackoverflow.com/questions/2754966/cflags-vs-cppflags
其他參考資料 http://wiki.ubuntu.org.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:MakeFile%E4%BB%8B%E7%BB%8D&variant=zh-hant
http://www.makelinux.net/make3/make3-CHP-2-SECT-7
Makefile 在沒有pattern rules時
會自動使用內建的implicit rules去compile *.c 和 *.cpp
CPPFLAGS 和 CFLAGS 的差別在於
如果檔案是*.cpp的形式
內建的implicit rule並不會去使用到CFLAGS
只會用到CPPFLAGS
所以如果把 -g -w -I include/這些東西放到CFLAGS的話
是沒有用的
其他參考資料 http://wiki.ubuntu.org.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:MakeFile%E4%BB%8B%E7%BB%8D&variant=zh-hant
http://www.makelinux.net/make3/make3-CHP-2-SECT-7
Makefile 在沒有pattern rules時
會自動使用內建的implicit rules去compile *.c 和 *.cpp
%.o:%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
%.o:%.cpp
$(CC) $(CPPFLAGS) -c -o $@ $<
CPPFLAGS 和 CFLAGS 的差別在於
如果檔案是*.cpp的形式
內建的implicit rule並不會去使用到CFLAGS
只會用到CPPFLAGS
所以如果把 -g -w -I include/這些東西放到CFLAGS的話
是沒有用的
2013年2月4日 星期一
[NAT Loopback] Buffalo WHR-G300N 並不支援 NAT Loopback
狀況是這樣的
我想把固定ip的某個port轉發(port forwarding)到LAN裡的某台桌機的port 22
這樣我就可以人在外面時
依然可以ssh遠端到我的桌機
登入192.168.11.1到Buffalo WHR-G300N
設定完Port Forwarding後
想說就當場說試試看可不可以用啦
總不能跑到外面試發現有問題在回家重設吧
接著我就ssh boton@140.x.x.x
得到的回應是
ssh: connect to host 140.x.x.x port 22: Connection refused
WTF...
阿不是設定port forwarding了嗎 到底哪裡有問題
找了許久也找不到有哪裡設定還要打開或調整之類的
後來google了一下才發現原來只有在LAN裡面不能這樣玩
到外面的網路就ok
當下心想這什麼妖術!!
原來是這台AP不支援NAT Loopback...
http://support.hornington.com/kb/question.php?ID=345
http://security.stackexchange.com/questions/16343/is-nat-loopback-on-my-router-a-security-problem
我想把固定ip的某個port轉發(port forwarding)到LAN裡的某台桌機的port 22
這樣我就可以人在外面時
依然可以ssh遠端到我的桌機
登入192.168.11.1到Buffalo WHR-G300N
設定完Port Forwarding後
想說就當場說試試看可不可以用啦
總不能跑到外面試發現有問題在回家重設吧
接著我就ssh boton@140.x.x.x
得到的回應是
ssh: connect to host 140.x.x.x port 22: Connection refused
WTF...
阿不是設定port forwarding了嗎 到底哪裡有問題
找了許久也找不到有哪裡設定還要打開或調整之類的
後來google了一下才發現原來只有在LAN裡面不能這樣玩
到外面的網路就ok
當下心想這什麼妖術!!
原來是這台AP不支援NAT Loopback...
http://support.hornington.com/kb/question.php?ID=345
http://security.stackexchange.com/questions/16343/is-nat-loopback-on-my-router-a-security-problem
2013年2月2日 星期六
[Matlab] 在Linux下安裝Matlab並在Mac OS上遠端執行(X11 Forwarding)
Linux下安裝其實滿容易的
安裝完後可以用ln -s 將安裝完的matlab資料夾下的bin下的matlab連結到/usr/bin/
以方便使用
執行時若遇到
先將安裝檔 matlab_2012a_unix.iso 掛載起來:
sudo mkdir /mnt/temp
sudo mount -o loop path_to_matlab_iso/matlab_2012a_unix.iso /mnt/temp
接著切換目錄到剛掛載完的資料夾
cd /mnt/temp
再來就是安裝啦!
sh ./install
接著就會啟動MATLAB安裝導引程式
安裝完後可以用ln -s 將安裝完的matlab資料夾下的bin下的matlab連結到/usr/bin/
以方便使用
執行時若遇到
/lib64/libc.so.6: not found
這個問題
只要下 ln -s /lib/x86_64-linux-gnu/libc.so.6 /lib64/libc.so.6 即可輕鬆搞定
若是遇到
what(): locale::facet::_S_create_c_locale name not valid 程式中止
用echo $LANG檢查一下你的環境變數$LANG
透過export LANG='en_US.utf8'修改$LANG後
重新執行matlab應該就可以開啟囉
======================================================
若是遇到
what(): locale::facet::_S_create_c_locale name not valid 程式中止
用echo $LANG檢查一下你的環境變數$LANG
透過export LANG='en_US.utf8'修改$LANG後
重新執行matlab應該就可以開啟囉
======================================================
要遠端執行Matlab並在近端看到圖形視窗也不難
首先要檢查有灌Matlab那台遠端主機的兩個檔案
/etc/ssh/ssh_config
(將這三行註解拿掉改成yes)
20 ForwardAgent yes
21 ForwardX11 yes
22 ForwardX11Trusted yes
/etc/ssh/sshd_config
(將X11Forwarding打開)
X11Forwarding yes
接著重新啟動sshd
sudo ssh restart
(若不行則用sudo service ssh restart)
到目前為止遠端主機已經設定完了
近端電腦我選用的是Mac OS X Mountain Lion
要注意的是Mountain Lion並不像Snow Leopard或其他較早版本
有內建X11
簡單google一下就會發現Apple提供了另一支程式XQuartz
並建議你使用他
並建議你使用他
http://support.apple.com/kb/HT5293
安裝完X11後
開啟Terminal執行ssh my_id@host.ip -X
記得後面要加-X這個選項 代表要開啟X11Forwarding
(在Mac OS X中則是以-Y代替-X)
接著就可以在ssh中執行matlab啦
安裝完X11後
開啟Terminal執行ssh my_id@host.ip -X
記得後面要加-X這個選項 代表要開啟X11Forwarding
(在Mac OS X中則是以-Y代替-X)
接著就可以在ssh中執行matlab啦
2013年1月31日 星期四
[cgdb] 在Mountain Lion上安裝cgdb
其實不只有在Mountain Lion有遇到這個問題
在還沒升級前的Snow Leopard也遇過一樣的問題
在安裝完readline和ncurse後(安裝readline若遇到-dynamiclib請見之前的文章)
就是到cgdb解開壓縮檔 然後執行
1) ./configure --prefix=/usr/local
2) make
接著馬上就會遇到一連串undefined symbol的問題
這些symbol通常都是一堆由 "_rl_" 開頭的function
(在snow leopard和mountain lion遇到的不太一樣 不過大致都是以 "_rl_" 開頭)
gcc -I../../../lib/adt -I../../../lib/rline -I../../../lib/util -I../../../lib/tgdb/annotate-two -I../../../lib/tgdb/gdbmi -I../../../lib/tgdb/tgdb-base -g -O2 -L../../../lib/adt -L../../../lib/rline -L../../../lib/util -L../../../lib/tgdb/annotate-two -L../../../lib/tgdb/gdbmi -L../../../lib/tgdb/tgdb-base -o tgdb_driver driver.o libtgdb.a ../../../lib/tgdb/annotate-two/libtgdb_a2.a ../../../lib/tgdb/gdbmi/libtgdb_mi.a ../../../lib/rline/librline.a ../../../lib/adt/libadt.a ../../../lib/util/libutil.a -lreadline -lncurses -lm
Undefined symbols for architecture x86_64:
"_rl_catch_sigwinch", referenced from:
_rline_initialize in librline.a(rline.o)
"_rl_complete_internal", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_completion_mode", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_completion_word_break_hook", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_delete_text", referenced from:
_rline_clear in librline.a(rline.o)
"_rl_invoking_keyseqs", referenced from:
_rline_get_keyseq in librline.a(rline.o)
"_rl_last_func", referenced from:
_rline_rl_complete in librline.a(rline.o)
_rline_rl_callback_read_char in librline.a(rline.o)
"_rl_mark", referenced from:
_rline_clear in librline.a(rline.o)
"_rl_named_function", referenced from:
_rline_get_keyseq in librline.a(rline.o)
"_rl_resize_terminal", referenced from:
_rline_resize_terminal_and_redisplay in librline.a(rline.o)
"_rl_translate_keyseq", referenced from:
_rline_get_keyseq in librline.a(rline.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [tgdb_driver] Error 1
解法如下:
把/usr/lib/libreadline.dylib砍掉就好 ==...
(可以試著把libreadline.dylib改名成libreadline_backup.dylib
然後重新到readline-6.1的資料夾下執行sudo make install一遍
會發現/usr/lib/下並不會產生新的libreadline.dylib
也就是說其實那個檔跟本就不是readline-6.1產生的
哪來的別問我 可能是系統本來就有 或是其他程式安裝時偷偷灌的 但沒灌完整就是了)
砍掉libreadline.dylib後重新make就搞定了
別忘了最後一步 sudo make install
在還沒升級前的Snow Leopard也遇過一樣的問題
在安裝完readline和ncurse後(安裝readline若遇到-dynamiclib請見之前的文章)
就是到cgdb解開壓縮檔 然後執行
1) ./configure --prefix=/usr/local
2) make
接著馬上就會遇到一連串undefined symbol的問題
這些symbol通常都是一堆由 "_rl_" 開頭的function
(在snow leopard和mountain lion遇到的不太一樣 不過大致都是以 "_rl_" 開頭)
gcc -I../../../lib/adt -I../../../lib/rline -I../../../lib/util -I../../../lib/tgdb/annotate-two -I../../../lib/tgdb/gdbmi -I../../../lib/tgdb/tgdb-base -g -O2 -L../../../lib/adt -L../../../lib/rline -L../../../lib/util -L../../../lib/tgdb/annotate-two -L../../../lib/tgdb/gdbmi -L../../../lib/tgdb/tgdb-base -o tgdb_driver driver.o libtgdb.a ../../../lib/tgdb/annotate-two/libtgdb_a2.a ../../../lib/tgdb/gdbmi/libtgdb_mi.a ../../../lib/rline/librline.a ../../../lib/adt/libadt.a ../../../lib/util/libutil.a -lreadline -lncurses -lm
Undefined symbols for architecture x86_64:
"_rl_catch_sigwinch", referenced from:
_rline_initialize in librline.a(rline.o)
"_rl_complete_internal", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_completion_mode", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_completion_word_break_hook", referenced from:
_rline_rl_complete in librline.a(rline.o)
"_rl_delete_text", referenced from:
_rline_clear in librline.a(rline.o)
"_rl_invoking_keyseqs", referenced from:
_rline_get_keyseq in librline.a(rline.o)
"_rl_last_func", referenced from:
_rline_rl_complete in librline.a(rline.o)
_rline_rl_callback_read_char in librline.a(rline.o)
"_rl_mark", referenced from:
_rline_clear in librline.a(rline.o)
"_rl_named_function", referenced from:
_rline_get_keyseq in librline.a(rline.o)
"_rl_resize_terminal", referenced from:
_rline_resize_terminal_and_redisplay in librline.a(rline.o)
"_rl_translate_keyseq", referenced from:
_rline_get_keyseq in librline.a(rline.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [tgdb_driver] Error 1
解法如下:
把/usr/lib/libreadline.dylib砍掉就好 ==...
(可以試著把libreadline.dylib改名成libreadline_backup.dylib
然後重新到readline-6.1的資料夾下執行sudo make install一遍
會發現/usr/lib/下並不會產生新的libreadline.dylib
也就是說其實那個檔跟本就不是readline-6.1產生的
哪來的別問我 可能是系統本來就有 或是其他程式安裝時偷偷灌的 但沒灌完整就是了)
砍掉libreadline.dylib後重新make就搞定了
別忘了最後一步 sudo make install
2012年11月17日 星期六
[Not Original] Apache with virtual hosts, PHP and SSI on Mac OS X 10.6
[From http://www.456bereastreet.com/archive/201104/apache_with_virtual_hosts_php_and_ssi_on_mac_os_x_106/ ]
I found this website when I was working on enabling SSI on Mac OS and found it extremely quick and useful.
I paste the whole paragraph here in case I might need it when the site is down. Thanks for the author and this awesome article.
I found this website when I was working on enabling SSI on Mac OS and found it extremely quick and useful.
I paste the whole paragraph here in case I might need it when the site is down. Thanks for the author and this awesome article.
2012年5月1日 星期二
[重構] Premature Optimization is The Root of All Evil
最近讀了一些重構(refactoring)和專案建置的書
感覺C++的功力又更上一層
不過我這邊要講的跟是不是用C++沒有太大的關係
只要你是用物件導向(object oriented)的程式語言來撰寫程式就夠了
你可以直接在Google輸入
"Premature Optimization is The Root of All Evil"
就會找到一堆相關的文章
Google甚至會在你打入premature optimization後就會提示你 is the root of all evil
翻成中文後大致上的意思是
"過早的最佳化是所有罪惡的根源"
大概有90%的最佳化的動作
都會在完整的專案完成後發現一點屁用都沒有
感覺C++的功力又更上一層
不過我這邊要講的跟是不是用C++沒有太大的關係
只要你是用物件導向(object oriented)的程式語言來撰寫程式就夠了
你可以直接在Google輸入
"Premature Optimization is The Root of All Evil"
就會找到一堆相關的文章
Google甚至會在你打入premature optimization後就會提示你 is the root of all evil
翻成中文後大致上的意思是
"過早的最佳化是所有罪惡的根源"
大概有90%的最佳化的動作
都會在完整的專案完成後發現一點屁用都沒有
2012年4月23日 星期一
[C++] const 篇
在之前的文章中有提到
我們如果要為類別(class)撰寫介面函式如get的話
可以寫成:
vector& getNameList() {
return _nameList;
}
const vector& getNameList() const {
return _nameList;
}
不過其實const的學問是很博大精深的
2012年4月19日 星期四
[Ubuntu]
每次重灌ubuntu時都會發現缺東缺西的
趕緊記下來以免又忘了
[Git]
sudo apt-get install git-core git-doc gitweb git-gut gitk git-email git-svn趕緊記下來以免又忘了
[Git]
git config --global color.ui true
git config --global user.name "Boton Chou"
git config --global user.email "xxx@gmail.com"
git config --global user.name "Boton Chou"
git config --global user.email "xxx@gmail.com"
2012年4月7日 星期六
[C++] 各式各樣的CAST
如果你對static_cast, dynamic_cast 等等還不甚熟悉
那你一定不常使用多型 (polymorphism)
更別說你懂物件導向語言
今天要講的主題是cast運算子 (operator)
包括了static_cast, const_cast, dynamic_cast, reinterpret_cast這四個運算子
這裡我就擷取一些精華翻譯一下:
2012年4月3日 星期二
[C++] 公用函式 - GET篇
這篇是寫給習慣在code時
加上const qualifie的人看的教學
如果你還沒有加const的習慣
那請現在趕快開始
ps. 雖然我知道加const很痛苦
而且每次加了const之後compliler就一直該
乾脆把全部const都砍了算了...
加const的好處在此就不贅述
隨便google都找的到
===========以上是前言============
首先你要有一個自己寫的class
然後你要熟悉什麼是const method
一般來說
我們都會為每個private成員寫set/get函式
比如說:
int getName() const {
return _name;
}
(加const原因在於getName這種取用函式不應該更動data member值)
這則我們要討論的是當data member不是基本資料型態時
比如說:
vector getNameList() const {
return _nameList;
}
這樣寫有個壞處
程式中的
_nameList 會在回傳時被copy一次
造成多餘的運算拖累執行時間
尤其是當使用者只是想要"讀"
_nameList 時
這樣的寫法就顯得更笨拙了
所以我們通常會回傳reference,寫成以下形式:
vector& getNameList() const {
return
_nameList;
}
不過這時compiler馬上就會跟你該說
invalid initialization of reference of type "vector&" from "const vector"
(看吧看吧 就說加了const會機機歪歪的 刪掉不就得了...不行!!)
會出現這樣的error原因在於
我們要求getNameList()這個函式為const method
亦即不可以更動任何data member
但又走後門把
_nameList 用reference傳出去
解決的方法如下,宣告兩種get函式:
vector& getNameList() {
return
_nameList;
}
const vector& getNameList() const {
return
_nameList;
}
大致上這樣
但要講到const的話
又是另一門博大精深的學問了
大致上這樣
但要講到const的話
又是另一門博大精深的學問了
2012年4月2日 星期一
[C++] 你可能會遇到的怪BUG
如果你遇到以下情況:
1) 明明我把完完全全無關僅要的某一行註解掉,可是程式就掛了(媽的莫名其妙)
ex:
// Code part1
...
// Variable a is an unused variable
int a = 10;
// Code part2
...
2) 槓掉後再加些別的程式碼又沒事了(幹)
這時候有很大的可能你用到了garbage value
小心檢查那些會crash的程式碼中
你所用過的所有pointer
確保他們沒有做一些蠢事
比如說拿了garbage還以為有initialize
或是用fread但是destination變數的大小和你要copy的大小根本不一樣之類的
如果還是無法的話
還有一個可能就是
你太衰了XDDD
2012年3月28日 星期三
2012年2月3日 星期五
2012年1月24日 星期二
[Ubuntu] openoffice 選單無法顯示中文
原因是灌了Macbuntu後
"應用程式字型"被設為Lucida Grande了
解決辦法:
在桌面按下右鍵
選擇更改桌面背景
接著在上方的頁籤中選擇字型
把應用程式字型改成"文泉驛微米黑"
就OK囉~~
"應用程式字型"被設為Lucida Grande了
解決辦法:
在桌面按下右鍵
選擇更改桌面背景
接著在上方的頁籤中選擇字型
把應用程式字型改成"文泉驛微米黑"
就OK囉~~
[Linux] rpm/yum/dpkg 指令集
[轉自] http://www.xspace.idv.tw/bo_blog/read.php?16
列出套件所安裝的路徑
dpkg -L [套件名稱] (已經安裝的套件)dpkg -c [套件名稱].deb (未安裝的套件)
rpm -qpl [套件名稱].rpm (未安裝的套件)
查詢檔案是由哪一個套件的
dpkg -S 檔案完整路徑
rpm -qf 檔案完整路徑
查詢已安裝套件的詳細資訊
dpkg -s [套件名稱]
rpm -qi [套件名稱]
查詢套件檔的詳細資訊(還未安裝的套件檔)
dpkg -I [檔案名稱].deb
rpm -qpi [檔案名稱].rpm
安裝套件
dpkg -i [套件名稱].debrpm -ivh [套件名稱].rpm (全新安裝)
rpm -Uvh [套件名稱].rpm (升級)apt-get install [套件名稱]
yum install [套件名稱]
查詢可用的套件
apt-cache search [套件名稱]
yum search [套件名稱]
列出套件詳細的資訊與介紹
apt-cache show [套件名稱]
yum info (列出所有套件的資訊)yum info [套件名稱] (列出所指定的套件資訊)
顯示套件相依產等相關資訊
apt-cache showpkg [套件名稱]
apt-cache depends [套件名稱]
顯示套件反向相依性等相關資訊
apt-cache rdepends [套件名稱]
套件庫中有多少可以使用的套件apt-cache stats
更新套件庫
apt-get update
yum update
升級已經安裝的套件apt-get upgrade
apt-get dist-upfrade
yum upgrade ( yum 3.X 版 以上才支援)
清除已經下載的套件檔
apt-get clean (移除所有的套件暫存檔)apt-get autoclean (移除舊版的所有套件暫存檔)yum clean all (移除所有的套件暫存檔)
RPM 特殊參數使用--nodeps
一般用於相依性時無法移除或安裝套件時,但安裝的話建議不要使用
--force
同--replacepkgs,--replacefiles,--oldpackage一樣,當安裝的軟件版本已經安裝在系統上,
或者是系統 上現有的版本比要安裝的版本高,系統就會發出警告。這時,用戶如果堅持安裝的話,
可以用此參數
--allmatches 刪除所指定套件名稱的所有版本,如果有多個版本存在的話,會出現
error: "xxx" specifies multip 錯碼訊息時使用
列出系統中已安裝的所有套件
dkpg -l
rpm -qa
yum list installed
查詢套件的狀況(已安裝)
dpkg -l [套件名稱]
移除套件dpkg -r [套件名稱] (刪除套件但不刪除設定檔)dpkg -P [套件名稱] (刪除套件也刪除設定檔)
rpm -e [套件名稱]
apt-get remove [套件名稱] (刪除套件但不刪除設定檔)apt-get remove --purge [套件名稱] (刪除套件也刪除設定檔)
yum remove [套件名稱]
dkpg -l
rpm -qa
yum list installed
查詢套件的狀況(已安裝)
dpkg -l [套件名稱]
移除套件dpkg -r [套件名稱] (刪除套件但不刪除設定檔)dpkg -P [套件名稱] (刪除套件也刪除設定檔)
rpm -e [套件名稱]
apt-get remove [套件名稱] (刪除套件但不刪除設定檔)apt-get remove --purge [套件名稱] (刪除套件也刪除設定檔)
yum remove [套件名稱]
列出套件所安裝的路徑
dpkg -L [套件名稱] (已經安裝的套件)dpkg -c [套件名稱].deb (未安裝的套件)
rpm -qpl [套件名稱].rpm (未安裝的套件)
查詢檔案是由哪一個套件的
dpkg -S 檔案完整路徑
rpm -qf 檔案完整路徑
查詢已安裝套件的詳細資訊
dpkg -s [套件名稱]
rpm -qi [套件名稱]
查詢套件檔的詳細資訊(還未安裝的套件檔)
dpkg -I [檔案名稱].deb
rpm -qpi [檔案名稱].rpm
安裝套件
dpkg -i [套件名稱].debrpm -ivh [套件名稱].rpm (全新安裝)
rpm -Uvh [套件名稱].rpm (升級)apt-get install [套件名稱]
yum install [套件名稱]
查詢可用的套件
apt-cache search [套件名稱]
yum search [套件名稱]
列出套件詳細的資訊與介紹
apt-cache show [套件名稱]
yum info (列出所有套件的資訊)yum info [套件名稱] (列出所指定的套件資訊)
顯示套件相依產等相關資訊
apt-cache showpkg [套件名稱]
apt-cache depends [套件名稱]
顯示套件反向相依性等相關資訊
apt-cache rdepends [套件名稱]
套件庫中有多少可以使用的套件apt-cache stats
更新套件庫
apt-get update
yum update
升級已經安裝的套件apt-get upgrade
apt-get dist-upfrade
yum upgrade ( yum 3.X 版 以上才支援)
清除已經下載的套件檔
apt-get clean (移除所有的套件暫存檔)apt-get autoclean (移除舊版的所有套件暫存檔)yum clean all (移除所有的套件暫存檔)
RPM 特殊參數使用--nodeps
一般用於相依性時無法移除或安裝套件時,但安裝的話建議不要使用
--force
同--replacepkgs,--replacefiles,--oldpackage一樣,當安裝的軟件版本已經安裝在系統上,
或者是系統 上現有的版本比要安裝的版本高,系統就會發出警告。這時,用戶如果堅持安裝的話,
可以用此參數
--allmatches 刪除所指定套件名稱的所有版本,如果有多個版本存在的話,會出現
error: "xxx" specifies multip 錯碼訊息時使用
2012年1月14日 星期六
[MacOSX] readline lib -dynamic -dynamiclib
在macbook air上灌cgdb遇到的問題
因為cgdb需要gnu 的 readline lib
載了readline-6.2.tar.gz解完壓縮開始灌後
馬上遇到Error
i686-apple-darwin11-llvm-gcc-4.2: -compatibility_version only allowed with -dynamiclib
請到shlib下的Makefile
把-dynamic改成-dynamiclib
(應該只有一個)
然後重新make就搞定了
(如果先前失敗過要先make clean)
資料來源自:http://bhou.wordpress.com/2011/09/13/how-to-install-gnuplot-in-mac-os-x-lion/
因為cgdb需要gnu 的 readline lib
載了readline-6.2.tar.gz解完壓縮開始灌後
馬上遇到Error
i686-apple-darwin11-llvm-gcc-4.2: -compatibility_version only allowed with -dynamiclib
請到shlib下的Makefile
把-dynamic改成-dynamiclib
(應該只有一個)
然後重新make就搞定了
(如果先前失敗過要先make clean)
資料來源自:http://bhou.wordpress.com/2011/09/13/how-to-install-gnuplot-in-mac-os-x-lion/
2011年12月28日 星期三
[Android] Intent, result, callback
廢話就不多說了
直接提供網址:
http://www.kfsoft.info/article-43-11--%E8%99%95%E7%90%86Activity-Result.html
寫得滿好的
希望因為我多加了一個inlink
可以讓他的blog被更多人看到XDD
直接提供網址:
http://www.kfsoft.info/article-43-11--%E8%99%95%E7%90%86Activity-Result.html
寫得滿好的
希望因為我多加了一個inlink
可以讓他的blog被更多人看到XDD
訂閱:
文章 (Atom)