編譯c++用g++,需要對c++11的支援:-std=c++11,新增標頭檔案路徑:-i,新增庫檔案路徑:-l
例:
g++
-wall
-std
=c++
11-iclasses
-ilib/rapidjson -ilib/libevent -ilib/libevent/include classes/log
.cpp classes/cachepool.cpp classes/nethandlers.cpp classes/netmanager.cpp main.cpp -o main -l/usr/local/lib -levent
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure
make
sudo make install
3) 專案中使用
標頭檔案路徑引用使用-i,庫檔案路徑引用使用-l,庫檔案引用使用-l(小寫的l),例
g++
-i/usr/local/include main.cpp -o main l/usr/local/lib -levent
遇到問題
libevent-2.0.so.5: cannot open shared object file: no such file or directory
解決:新增對so檔案的鏈結
32位:
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
64位:
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
1.後台執行,例:
./main &
2.後台執行,重定向標準輸出到 log.file 中
./main > log.file &
3.後台執行,重定向標準輸出到 log.file 中,重定向錯誤輸出到 log.file中
./main>log.file
2>&1 &
4.後台執行,重定向標準輸出到 log.file 中,重定向錯誤輸出到 log.file中,將程式設定為不掛起,以便遠端連線中斷後程式可以繼續執行
nohup ./main>log.file
2>&1 &
檢視該程序命令:ps -ef | grep main
/dev/null :代表空裝置檔案
> :代表重定向到**,例如:echo 「123」 > /home/123.txt
1 :表示stdout標準輸出,系統預設值是1,所以」>/dev/null」等同於」1>/dev/null」
2 :表示stderr標準錯誤
& :表示等同於的意思,2>&1,表示2的輸出重定向等同於1,即2>&1表示重定向錯誤輸出到標準輸出中
# jobs //檢視任務,返回任務編號n和程序號
# bg %n //將編號為n的任務轉後台執行
# fg %n //將編號為n的任務轉前台執行
# ctrl+z //掛起當前任務
# ctrl+c //結束當前任務
1.core檔案設定
當某程式崩潰時,核心會丟擲當時該程式程序的記憶體詳細情況,會生成core.***的檔案。我們通過ulimit命令來對core.***檔案進行相關設定,使用 ulimit -a 命令會列出檔案的相關資訊
ulimit -a
使用ulimit -c 10來設定生成檔案大小為10段(blocks),或者用unlimited設定為無限大
ulimit -c
10
2.生成core檔案
程式崩潰時就會自動生成core.***的檔案
3.除錯core檔案
首先確認安裝了gdb,如果沒有使用aptitude install gdb或apt-get install gdb 裝上
aptitude install gdb
使用gdb core.***檔案進行除錯,例
gdb core.1234
附:詳細文件 Linux下編譯C 指令
單個原始檔生成可執行程式 下面是乙個儲存在檔案 helloworld.cpp 中乙個簡單的 c 程式的 helloworld.cpp include int main int argc,char argv 程式使用定義在標頭檔案 iostream 中的 cout,向標準輸出寫入乙個簡單的字串。該 可...
linux下的c 編譯
end目前在linux上,c 的編譯主要依賴於gcc,而gcc實際上並不是乙個編譯器,其全稱為gnu compiler collection,即gnu的編譯器集合,可以通過它來編譯c c object c等各種語言的原始碼。其中gcc是gcc中的gnu c compiler c編譯用 g 即為gcc...
linux環境下編譯C 檔案
最近需要將 上傳到github,順便使得 要在ubuntu上能夠編譯執行。稍微學習了一下ubuntu環境下的c 檔案編譯方式。隨便寫個簡單的程式 test.cpp include int main int argc,char argv 可以直接g test.cpp編譯,編譯器預設的動作 編譯源 檔案...