個人linuxの下でc++プロジェクトをコンパイルする問題の概要

4700 ワード

1.関連コンパイルコマンド
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

2.libeventコンパイル、インストールと使用
1)公式サイトはソースパッケージlibevent-2.0をダウンロードする.22-stable.tar.gz(http://libevent.org/)2)解凍、コンパイル、インストール
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

問題が発生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

3.運転
1.バックグラウンド運転、例:
./main &

2.バックグラウンド運転、リダイレクト基準をlogに出力.ファイル内
./main > log.file &

3.バックグラウンド運転、リダイレクト基準をlogに出力.fileでリダイレクトエラーがlogに出力.ファイル内
./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と番号nのタスクをバックグラウンドで実行#fg%n//nと番号nのタスクをフロントで実行#ctrl+z//現在のタスクを保留#ctrl+c//現在のタスクを終了
4.デバッグ
1.coreファイル設定
あるプログラムがクラッシュすると、カーネルはそのときのプログラムプロセスのメモリの詳細を放出しcoreを生成する.xxxのファイル.私たちはulimitコマンドでcoreに対処します.xxxファイルは関連設定を行い、ulimit-aコマンドを使用してファイルの関連情報をリストします.
ulimit -a

ulimit-c 10を使用して生成ファイルサイズを10セグメント(blocks)に設定するか、unlimitedを無限大に設定します.
ulimit -c 10

2.coreファイルの生成
プログラムがクラッシュすると自動的にcoreが生成する.xxxのファイル
3.coreファイルのデバッグ
まずgdbがインストールされていることを確認し、aptitude install gdbまたはapt-get install gdbを使用してインストールされていない場合は
aptitude install gdb

gdb coreを使用する.xxxファイルをデバッグする例
gdb core.1234

添付:詳細http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-hans