linux上编译调试C++项目
打开服务管理器:services.msc
NAT虚拟一个局域网
DHCP是分配一个IP地址的
LTS是长期维护版本
安装ssh:sudo apt-get install openssh-server
apt-get update
apt配置文件的路径:/etc/apt/sources.list
ifconfig
网卡配置文件/etc/network/
if-down.d if-post-down.d if-pre-up.d if-up.d interfaces interfaces.d
if-down是关闭网卡的脚本
if-up是启动网卡的脚本
interfaces 是网卡的配置信息
ifup ens33:启动网卡
配置samba服务器
/etc/samba/smb.conf,打开这个配置文件,末尾加上
[code]
path=/
writeable=yes
browseable=yes
guest ok=yes
GCC编译代码
gcc -c main.c 只编译不链接
gcc main.o -o main -o file 指定文件名
gcc -E main.c 预编译
gcc -S main.c:只编译不汇编,就是生成汇编语言的代码
gcc -g main.c -o main_d:生成调试信息的版本
Linux静态库编译
ldd:查看所有引用的库
ldd main :main是执行程序
g++ main.cpp -o main_static -static:编译成静态库
Linux动态库的编译和调用
g++ person.cpp -fpic -shared -o libperson.so
-I指定头文件路径
-L指定库的路径
-IPerson:指定名字Person
g++ main.cpp -o main -I../Person -L../Person -IPerson
export LD_LIBRARY_PATH=../Person
GDB调试C++代码
bt查看函数调用的栈空间信息,比如程序dump了,可以通过这个命令查看
list<行号>|<函数名> 查看指定位置的程序源代码
break 行号|函数名<条件表达式> 设置断点
info break 显示断点信息
run 运行程序
print 表达式|变量 查看程序运行时对应表达式和变量的值
next 单步恢复程序运行,但是不进入函数调用
step 单步恢复程序运行,并且进入函数调用
continue 继续执行函数,直到函数结束或遇到新断点
编译的时候首先编译成调试版:g++ main.cpp -o main -g
gdb main
list可以简写成l,l 1表示第一行开始展示
list后面还可以跟函数名
设置断点break 10,这样在第十行设置了一个断点。break也可以简写成b
b后面也可以跟函数名。
delete 2:删除断点
continue:继续运行,停到下一个断点
set var i = 99 设置变量的值 加var的目的是防止与gdb内部参数冲突
clear 清除所有断点
程序dump掉了,调试方法
首先改变ulimit -c unlimited:不限制大小
ulimit -c n单位是kb
makefile编写项目文件
make -f centosmake #用centosmake来make
#!/bin/sh
LD_LIBRARY_PATH=./
export LD_LIBRARY_PATH
./testxlog