%.o : %.cpp
$(CC) -o ...
這種寫法只有"當前目錄下"的.o檔才會使用這條rule
如果要把*.o放到obj/下的話
就得寫成
obj/%.o: %.cpp
$(CC) -o ...
這樣才找得到
另外可以在terminal下輸入make -p
來看到整個make的流程
Boton's Note
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啦
訂閱:
文章 (Atom)