个人linux下编译c++工程所遇问题汇总
来源:互联网 发布:金税盘开票软件界面 编辑:程序博客网 时间:2024/06/05 09:06
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.gzcd libevent-2.0.22-stable./configuremakesudo 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
3.运行
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 //结束当前任务
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
- 个人linux下编译c++工程所遇问题汇总
- linux下编译opencv工程问题
- Linux下编译Android源码问题汇总
- Linux下编译Android源码问题汇总
- linux下编译出现的问题汇总
- JavaWeb工程在Linux下的中文乱码问题汇总
- Linux编译问题汇总
- Linux Centos7 下编译KBEngine 所遇到的小问题
- 在linux环境下编译一个c/c++工程
- Linux工程下所有C代码编译Makefile模板
- 在linux环境下编译一个c/c++工程
- 在linux环境下编译一个c/c++工程
- 在linux环境下 编译opencv (C++)工程
- LINUX下C开发所遇问题总结1--字符串连接问题
- LINUX下C开发所遇问题总结2--多线程问题
- Ubuntu下编译Android源代码及内核所遇到的问题汇总
- linux 下发布war所遇问题
- linux下C语言编译的问题
- EMV标准_百度百科
- MD5 加密的简单封装
- HQL语句中的表名是javabean的类名
- iOS常见的几种加密和比较
- XML:DTD、DTD定义元素、DTD定义属性、DTD定义实体
- 个人linux下编译c++工程所遇问题汇总
- 从 UIKit 到 AppKit
- 数组
- 二分匹配最大独立集——hdu1068
- hibernate的优点 &设计思想
- 千万并发的秘密-内核是问题的根本
- 微博项目学习笔记1
- 插入排序的简单解释(C++)
- Html5 onpopstate 事件禁止手机设备上的返回操作