1.
调试
工具:gdb 具备调试信息才能调试 需要的是debug(调试)版本
方法:编译时加-g,使程序具有调试信息
gdb main
显示代码:l l l l 3看前面的代码
下断点:b(break) 11(行号) b +函数名:在函数入口下断点
显示断点信息:info break
运行程序:r(run)
输出值:P(printf) i
输出值:p &i
往下走,单步执行:n(next)
退出:q
display i:每次执行都显示i的值
c(continuue):继续执行
删除断点:delete +断点编号
s(step:一步一步地):进入函数
打印:p x p y
f(finsh):跳出函数
l add.c :3:跳到add的第三行,一次一般显示10行
bt:打印函数调用的栈关系
例:A()->B()->C()
执行bt后:
先执行C,然后回到B,再回到A
面试官会问如何调用多进程,多线程
2. 库:预先编译好的函数(方法)的集合(.o文件)
libxx.a 静态库 libxx.so 共享库
which +命令:查看命令
程序,命令 在/usr/bin /bin
头文件 /usr/include
库文件 /usr/lib /lib
环境变量:PATH
$PATH
3. 做一个静态库
ar crv libxxx.a add.o max.o c:创建 r:将后面的.o文件加入库 v:显示信息
如:ar crv libfun.a add.o max.o
引用库:
gcc -o main main.o -L. -lfun
所以我们可以把自己做的库拷进标准目录下:
su
cp libfun.a /usr/lib
这回可以这样引用:
gcc -o main main.o -lfun
一步做法:gcc -o main main.c -L路径 -l库名
4. 共享库
5. 三种写法:
gcc –shared -fPIC -o libfun.so add.o max.o
gcc -shared -fPIC -o libfun.so add.c max.c
gcc -shared -fPIC add.c max.c -o libfun.so
ldd:查看当前使用使用的共享库
找不见它,因为在执行程序时将方法装载进来,才会知道它在哪
所以将他拷进标准目录:/usr/lib
工具:gdb 具备调试信息才能调试 需要的是debug(调试)版本
方法:编译时加-g,使程序具有调试信息
gdb main
显示代码:l l l l 3看前面的代码
下断点:b(break) 11(行号) b +函数名:在函数入口下断点
显示断点信息:info break
运行程序:r(run)
输出值:P(printf) i
输出值:p &i
往下走,单步执行:n(next)
退出:q
display i:每次执行都显示i的值
c(continuue):继续执行
删除断点:delete +断点编号
s(step:一步一步地):进入函数
打印:p x p y
f(finsh):跳出函数
l add.c :3:跳到add的第三行,一次一般显示10行
bt:打印函数调用的栈关系
例:A()->B()->C()
执行bt后:
先执行C,然后回到B,再回到A
面试官会问如何调用多进程,多线程
2. 库:预先编译好的函数(方法)的集合(.o文件)
libxx.a 静态库 libxx.so 共享库
which +命令:查看命令
程序,命令 在/usr/bin /bin
头文件 /usr/include
库文件 /usr/lib /lib
环境变量:PATH
$PATH
3. 做一个静态库
ar crv libxxx.a add.o max.o c:创建 r:将后面的.o文件加入库 v:显示信息
如:ar crv libfun.a add.o max.o
引用库:
gcc -o main main.o -L. -lfun
所以我们可以把自己做的库拷进标准目录下:
su
cp libfun.a /usr/lib
这回可以这样引用:
gcc -o main main.o -lfun
一步做法:gcc -o main main.c -L路径 -l库名
4. 共享库
5. 三种写法:
gcc –shared -fPIC -o libfun.so add.o max.o
gcc -shared -fPIC -o libfun.so add.c max.c
gcc -shared -fPIC add.c max.c -o libfun.so
ldd:查看当前使用使用的共享库
找不见它,因为在执行程序时将方法装载进来,才会知道它在哪
所以将他拷进标准目录:/usr/lib