0
点赞
收藏
分享

微信扫一扫

Linux下静态库,动态库(共享库)和GDB调试的学习

小暴龙要抱抱 2022-04-29 阅读 48
linuxubuntu

一:了解根目录

1. opt一般按照软件

2.查看根目录

ls /

3.查看命令

ls /bin

二:.o文件打包生成静态库   工程拷贝(备份)

 

1.进入home

cd /home/

2.进入用户文件

cd crh/

3.进入工程

cd mz

4.生成.o文件

gcc -c hello.c

5.ls查看有hello.o文件

ls

6.   .o文件打包生成静态库

ar -crv libmyhello.a hello.o

7.ls查看生成.a文件

ls

8.返回上一级

cd ..

9.工程拷贝---mz中做静态库   mzback中做动态库

cp -r mz/ mzback/

10查看--工程已经拷贝

ls

三: 静态库的学习 -- mz

 

1.删除 ---- 若是把不想删的给删了,去备份工程下拷贝一个到当前工程中

rm main.i
cp mzback/hello.h mz

2.拷贝某工程下某文件到另一个工程中

cp mzback/hello.h mz

3. mz工程下需要:

hello.h(接口文件)  main.c(自己写的)  libmyhello.a(源码内容)才可以生成exe可执行程序

hello的方法在.a中    myhello--静态库库名

4.重点 -----------   静态库编译生成可执行程序

gcc main.c -o main -L../mz -lmyhello

5.查看生成main可执行

ls

6.运行

./main

7.将main可执行放到上一级中,也可执行

cp main ..
cd ..
ls
./main

四:动态库的学习--mzback

 

1.进入mzback工程

cd mzback/

2.生成动态库(共享库)--生成.so文件

a.先生成.o文件:

gcc -fpic -c hello.c

b.生成.so文件

gcc -shared -o libmyhellotest.so hello.o

3.ls查看---.so文件已经生成

ls

4.编译生成.out可执行程序

gcc main.c -L../mzback -lmyhellotest

8.查看--a.out可执行程序已经生成

ls

9.a.out不可以运行 查看下 lib(系统目录)

ls /lib

五:.so文件要拷贝到系统目录下--相当于需要dll(动态链接库)文件

 

1.将.so文件拷贝到系统目录下

cp libmyhellotest.so /lib

2.运行a.out  --  可以运行

./a.out

3. 将a.out拷贝到上一级目录中也可以运行

cp a.out ..
cd ..
./a.out

4.若是把系统目录下.so文件移除---相当于DLL(动态链接库)文件 没有--就不能运行了

六:GDB调试的学习

1.需要-g

gcc *.c -o main -g

2.进入调试

gdb main

 

1.打断点(第几行)

b 3

2.运行

r

3.下一步

n

4.退出调试

q

5.进入调试

gdb main

 

 

1.查看列表(代码)

l

2.在第5行打断点

b 5

3.运行

r

4.退出调试

q

举报

相关推荐

0 条评论