编译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
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
遇到问题
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 //结束当前任务
当某程序崩溃时,内核会抛出当时该程序进程的内存详细情况,会生成core.xxx的文件。我们通过ulimit命令来对core.xxx文件进行相关设置,使用 ulimit -a 命令会列出文件的相关信息
ulimit -a
使用ulimit -c 10来设置生成文件大小为10段(blocks),或者用unlimited设置为无限大
ulimit -c 10
程序崩溃时就会自动生成core.xxx的文件
首先确认安装了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