%d %i 十進位整數
%u unsigned 十進位整數
%x unsigned 16進位整數,小寫表示(a-f)
%X unsigned 16進位整數,大寫表示(A-F)
%o unsigned 8進位整數
以上加-和數字表示左對齊最少幾位,如%-9d表示左切齊最少印9位
以上加+和數字表示右對齊最少幾位,如%+9d表示右切齊最少印9位,不足處補空白
以上加+和0開頭的數字表示右對齊最少幾位,不足補0,如%+09d表示右切齊最少印9位,不足處補0
%ld 以十進位印出long
%lld 以十進位印出long long
%f浮點數float
%e %E科學表示法浮點數double,%e小寫 %E大寫
%g %G依照double的數值自動選擇以%f或%e格式印出
以上加-和具有小數點的數字表示左對齊最少幾位,如%-9.2f表示左切齊最少印9位,其中小數點以下2位
以上加+和具有小數點的數字表示右對齊最少幾位,如%=9.2f表示右切齊最少印9位,其中小數點以下2位
%c unsigned char
%s string(array of char terminated by 0)
%p pointer to void
%% 印出%
用C來寫複數
GNU C99以前通常是用結構(struct)來表示,簡單的例子如下
struct my_complex {
double real;
double imag;
};
int main(void){
struct my_complex z = {42.0, 42.0};
printf("z = %f + %fI\n",x.real, x.imag);
return 0;
}
#include < complex.h >
int main (void){
complex double z = 42.0 + 42.0*I;
printf("z = %f + %fI\n", creal(z), cimag(z));
return 0;
}
------------------------------------------------------#include < stdio.h >
struct my_complex {
double real;
double imag;
};
int main(void){
struct my_complex z = {42.0, 42.0};
printf("z = %f + %fI\n",x.real, x.imag);
return 0;
}
-----------------------------------------------------
C99提供了一個方便的表示方法,在complex.h裡面#include < stdio.h >
#include < complex.h >
int main (void){
complex double z = 42.0 + 42.0*I;
printf("z = %f + %fI\n", creal(z), cimag(z));
return 0;
}
-----------------------------------------------------
— Function: long double creall (complex long double z)These functions return the real part of the complex number z.
— Function: long double cimagl (complex long double z)These functions return the imaginary part of the complex number z.
詳細的內容可以參考:
http://www.gnu.org/s/libc/manual/html_node/Complex-Numbers.html#Complex-Numbers
apt 常用指令
本文取自:http://plog.longwin.com.tw/my_note-unix/2005/05/01/use_apt
伺服器列表
/etc/apt/source.list
系統升級相關:
aptitude
=======
1.aptitude install套件名稱
單純安裝指定套件
其他的可以參考apt-get
=======
apt-get
=======
1.apt-get update
更新套件資訊,要升級之前,最好都先執行一次本指令和 Server 端的資訊同步一下
2.apt-get check
檢查你系統上套件的相依性狀況
3.apt-get dist-upgrade 和 apt-get upgrade
執行整個升級動作,建議用 apt-get dist-upgrade 比較好
4.apt-get install 套件名稱
安裝某一個套件及其相關的套件
5.apt-get remove 套件名稱 (含設定檔等完整移除: apt-get --purge remove 套件名稱)
移除某套件,和 rpm -e 功能一樣,同時還會幫您把相關的套件一併移除
6.apt-get source 套件名稱
抓回 source rpm
例: apt-get source --compile zhcon
抓回 source rpm 並編譯成 binary rpm
--compile 參數就如同 rpm -ba 一般
7.apt-get clean
刪除下載回來的檔案
=========
apt-cache
=========
1.apt-cache showpkg
顯示套件資訊
例: apt-cache showpkg zhcon
2.apt-cache stats
顯示相關的統計資訊
3.apt-cache dump
顥示 cache 中每個套件的簡短資訊
4.apt-cache unmet
檢查所有未符合相依性的相關資訊
5.apt-cache show
顯示套件資訊,同 rpm -qi 一般
6.apt-cache search
尋找檔案 例: apt-cache search zhcon
7.apt-cache depends
顯示套件的相依性 例: apt-cache depends zhcon
8.apt-cache pkgnames
尋找符合的套件名稱 例: $ apt-cache pkgnames openss
openssh-askpass
openssl096
openssl-perl
openssl095a
openssl-python
openssh-clients
openssl-devel
openssh-askpass-gnome
openssh
openssl
openssh-serve
==========
apt-config
==========
1.apt-config dump
顯示目前的設定狀態
參考
http://www.linux.org.tw/~candyz/APT-HOWTO_CLE.txt
http://www.debian.org/doc/manuals/apt-howto/
其它備註
------------------------------------------------------------------
apt-get install package --reinstall 重新安裝套件
apt-get -f install 修復安裝 "-f = --fix-missing"
apt-cache rdepends package 是查看該套件被哪些套件依賴
apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載該套件的原始碼
apt-get clean && apt-get autoclean 清理沒用的套件
apt-get check 檢查是否有損壞的相依性
------------------------------------------------------------------
aptitude
套件管理程式,不喜歡打上述指令可以用這個。
伺服器列表
/etc/apt/source.list
系統升級相關:
- apt-get upgrade => 軟體升級
- apt-get dist-upgrade => 系統升級
- 更多詳細可見: SoftwareUpgrading
aptitude
=======
1.aptitude install套件名稱
單純安裝指定套件
其他的可以參考apt-get
=======
apt-get
=======
1.apt-get update
更新套件資訊,要升級之前,最好都先執行一次本指令和 Server 端的資訊同步一下
2.apt-get check
檢查你系統上套件的相依性狀況
3.apt-get dist-upgrade 和 apt-get upgrade
執行整個升級動作,建議用 apt-get dist-upgrade 比較好
4.apt-get install 套件名稱
安裝某一個套件及其相關的套件
5.apt-get remove 套件名稱 (含設定檔等完整移除: apt-get --purge remove 套件名稱)
移除某套件,和 rpm -e 功能一樣,同時還會幫您把相關的套件一併移除
6.apt-get source 套件名稱
抓回 source rpm
例: apt-get source --compile zhcon
抓回 source rpm 並編譯成 binary rpm
--compile 參數就如同 rpm -ba 一般
7.apt-get clean
刪除下載回來的檔案
=========
apt-cache
=========
1.apt-cache showpkg
顯示套件資訊
例: apt-cache showpkg zhcon
2.apt-cache stats
顯示相關的統計資訊
3.apt-cache dump
顥示 cache 中每個套件的簡短資訊
4.apt-cache unmet
檢查所有未符合相依性的相關資訊
5.apt-cache show
顯示套件資訊,同 rpm -qi 一般
6.apt-cache search
尋找檔案 例: apt-cache search zhcon
7.apt-cache depends
顯示套件的相依性 例: apt-cache depends zhcon
8.apt-cache pkgnames
尋找符合的套件名稱 例: $ apt-cache pkgnames openss
openssh-askpass
openssl096
openssl-perl
openssl095a
openssl-python
openssh-clients
openssl-devel
openssh-askpass-gnome
openssh
openssl
openssh-serve
==========
apt-config
==========
1.apt-config dump
顯示目前的設定狀態
參考
http://www.linux.org.tw/~candyz/APT-HOWTO_CLE.txt
http://www.debian.org/doc/manuals/apt-howto/
其它備註
- 移除多餘套件(Library): apt-get remove --purge `deborphan`
------------------------------------------------------------------
apt-get install package --reinstall 重新安裝套件
apt-get -f install 修復安裝 "-f = --fix-missing"
apt-cache rdepends package 是查看該套件被哪些套件依賴
apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載該套件的原始碼
apt-get clean && apt-get autoclean 清理沒用的套件
apt-get check 檢查是否有損壞的相依性
------------------------------------------------------------------
aptitude
套件管理程式,不喜歡打上述指令可以用這個。
解決 /usr/bin/ld: cannot find -lxxx 問題
問題:
在linux環境編譯應用程式或lib的source code時常常會出現如下的錯誤訊息:
其命名規則是:lib+庫名(即xxx)+.so。
會發生這樣的原因有以下三種情形:
gcc命令祥解
解決方法:
(1)先判斷在/usr/lib 下的相對應的函式庫文件(.so) 的 symbolic link 是否正確
若不正確改成正確的連結目標即可解決問題。
(2)若不是 symbolic link 的問題引起,而是系統缺少相對應的lib安裝lib即可解決。
(3)如何安裝缺少的lib:
以上面三個錯誤訊息為例:
先搜尋相對應的LIB再進行安裝的作業如:
在進行輸入法gcin的 Source Code的編譯時出現以下的錯誤訊息:
lib(.so檔)的symbolic link 不正確
解決方法如下:
解法如下:
apt-get install libxtst-dev
內容取自:波哥的IT私房菜
在linux環境編譯應用程式或lib的source code時常常會出現如下的錯誤訊息:
Example:
- /usr/bin/ld: cannot find -lxxx
其中xxx即表示函式庫文件名稱,如上例的:libc.so。
- /usr/bin/ld: cannot find -lc
其命名規則是:lib+庫名(即xxx)+.so。
會發生這樣的原因有以下三種情形:
1 系統沒有安裝相對應的lib對於上述三種原因有一篇文章寫的很棒可參考這一篇文章的第4點:
2 相對應的lib版本不對
3 lib(.so檔)的symbolic link 不正確,沒有連結到正確的函式庫文件(.so)
gcc命令祥解
解決方法:
(1)先判斷在/usr/lib 下的相對應的函式庫文件(.so) 的 symbolic link 是否正確
若不正確改成正確的連結目標即可解決問題。
(2)若不是 symbolic link 的問題引起,而是系統缺少相對應的lib安裝lib即可解決。
(3)如何安裝缺少的lib:
以上面三個錯誤訊息為例:
錯誤1缺少libc的LIB以Ubuntu為例:
先搜尋相對應的LIB再進行安裝的作業如:
apt-cache search libc-dev實例:
在進行輸入法gcin的 Source Code的編譯時出現以下的錯誤訊息:
/usr/bin/ld: cannot find -lXtst經檢查後發現是:
lib(.so檔)的symbolic link 不正確
解決方法如下:
cd /usr/lib如果在/usr/lib的目錄下找不到 libXtst.so 檔,那麼就表示系統沒有安裝libXtst的函式庫。
ln -s libXtst.so.6 libXtst.so
解法如下:
apt-get install libxtst-dev
內容取自:波哥的IT私房菜
常用的NVCC指令
1。-deviceemu
用cpu模擬模式。常用於debug,但是要小心threads數目。單純就是software contral
2。-use_fast_math
將可以用GPU硬體算數學涵數都用GPU計算
3。-maxrregcount N
限制每一個threads所用的register大小。if kernel超過了,就會存在local memory
4。--ptxas-options=-v
回報用的memory量。
5。-arch sm_xx xx是CUDA版本(滿多涵數都要指定版本)
指定compiler的版本
6。-l + lib名稱 ex:-lcublas
連結標頭檔
7。-l
指定尋找的lib路徑
8。-I
指定尋找的標頭檔路徑
2010/11/27 更新部分
nvcc -g -I/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/inc -L/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/lib/linux cudaapi.cu -lrt /home/zcli/NVIDIA_GPU_Computing_SDK/C/lib/libcutil_x86_64.a
今天在試cutil.h一些計時的api時,一直undefine reference,一整個快發瘋,不是連結lib path跟header path就好了嗎?看了一個下午的網路,還是搞不懂為什麼...
大概知道就是我沒有連結到lib ,加了-lrt那段,意思好像是靜態連結資料庫的作法,實際作用完全搞不懂。再找機會來研究研究。
另外補充一下,可以直接打-lcutil_x86_64,就編過了....好像是因為cudatookit在3.0版的名稱改變了T_T
其他有用到再打上來>"<
用cpu模擬模式。常用於debug,但是要小心threads數目。單純就是software contral
2。-use_fast_math
將可以用GPU硬體算數學涵數都用GPU計算
3。-maxrregcount N
限制每一個threads所用的register大小。if kernel超過了,就會存在local memory
4。--ptxas-options=-v
回報用的memory量。
5。-arch sm_xx xx是CUDA版本(滿多涵數都要指定版本)
指定compiler的版本
6。-l + lib名稱 ex:-lcublas
連結標頭檔
7。-l
指定尋找的lib路徑
8。-I
指定尋找的標頭檔路徑
2010/11/27 更新部分
nvcc -g -I/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/inc -L/home/zcli/NVIDIA_GPU_Computing_SDK/C/common/lib/linux cudaapi.cu -lrt /home/zcli/NVIDIA_GPU_Computing_SDK/C/lib/libcutil_x86_64.a
今天在試cutil.h一些計時的api時,一直undefine reference,一整個快發瘋,不是連結lib path跟header path就好了嗎?看了一個下午的網路,還是搞不懂為什麼...
大概知道就是我沒有連結到lib ,加了-lrt那段,意思好像是靜態連結資料庫的作法,實際作用完全搞不懂。再找機會來研究研究。
另外補充一下,可以直接打-lcutil_x86_64,就編過了....好像是因為cudatookit在3.0版的名稱改變了T_T
其他有用到再打上來>"<
訂閱:
文章 (Atom)