個人linux下編譯c 工程所遇問題彙總

2021-07-09 02:35:54 字數 2282 閱讀 2304

編譯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編譯,編譯器預設的動作 編譯源 檔案...