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  是网卡的配置信息


linux上编译调试C++项目


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动态库的编译和调用

fpic:表示里面的函数与代码位置不相关,可以通过头文件直接找到,动态库的名字必须以lib打头,结尾必须.so

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

linux上编译调试C++项目

#!/bin/sh
LD_LIBRARY_PATH=./
export LD_LIBRARY_PATH
./testxlog