【Linux】 静态库,动态库(共享库) & GDB调试

目录

一:根目录 & 系统命令

二:需要.o文件打包生成静态库

三:使用静态库编译生成可执行程序

四:需要.so文件打包生成动态库

五:使用动态库编译生成可执行程序

六:GDB调试


一:根目录 & 系统命令

1. opt 一般使用于 安装软件

2.查看根目录                                     ls /

ls /

3.查看系统命令                                         ls /bin

ls /bin

二:需要.o文件打包生成静态库

1.进入home文件夹                               cd /xxx/

cd /home/

2.进入用户文件夹                                 cd xxx/  [用户文件夹在/home下]

cd crh/

3.进入工程文件夹                                 cd xxx

cd mz

4.生成.o文件                                        gcc -c xxx.c

gcc -c hello.c

5.查看是否生成有hello.o文件                ls

ls

6.使用生成的.o文件来打包生成静态库     ar -crv libxxx.a xxx.o[.a和.o文件名命名自定]

ar -crv libmyhello.a hello.o

7.查看是否生成.a文件                          ls

ls

8.返回上一级                                           cd ..

cd ..

9.工程拷贝【备份】

【此篇文章中:mz中做静态库   mzback中做动态库】

cp -r xxx1/ xxx2/

cp -r mz/ mzback/

10.查看、工程已经拷贝                           ls

ls

三:使用静态库编译生成可执行程序

1.删除                                              rm xxx

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

   拷贝一个相同文件夹的命令 cp -r xxx1/ xxx2/

   从一个文件夹中去拷贝一个文件到另一个文件夹中 cp xxx2/xxxxx.c xxx1

rm main.i

 从一个文件夹中去拷贝一个文件到另一个文件夹中 cp xxx2/xxxxx.c xxx1

cp mzback/hello.h mz

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

 从一个文件夹中去拷贝一个文件到另一个文件夹中 cp xxx2/xxxxx.c xxx1

cp mzback/hello.h mz

3. mz工程文件夹下需要如下文件 【静态库编译执行程序】

hello.h(接口文件) 

main.c(自己写的) 

libmyhello.a(源码内容)[myhello是自己命名的可以随意命名、但注意规范]

才可以生成exe可执行程序

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

4.静态库编译生成可执行程序    gcc main.c -o main -L../xxx1 -l静态库库名

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

5.查看已经生成main可执行文件     ls

ls

6.运行可执行文件                          ./main

./main

7.拷贝文件到上一层文件夹中       cp xxx ..

   将main可执行放到上一级中,也可执行【静态库编译执行程序】

cp main ..

cd ..   返回上一级

ls       查看main已经拷贝到上一级文件夹中 

cd ..
ls

运行可执行文件                        ./main 

./main

四:需要.so文件打包生成动态库

1.进入文件夹                                    cd xxx2/

   mzback工程文件夹【用于动态库学习】

cd mzback/

2.生成.so文件

a.先生成.o文件                            gcc -fpic -c xxx.c

gcc -fpic -c hello.c

b.后才能再生成.so文件                gcc -shared -o libxxxxx.so xxx.o[xxxxx动态库库名]

gcc -shared -o libmyhellotest.so hello.o

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

ls

4.编译生成.out可执行程序           gcc main.c -L../xxx2 -lxxxxx[xxxxx动态库库名]

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

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

ls

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

ls /lib

五:使用动态库编译生成可执行程序

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

1..so文件拷贝到系统目录下           cp xxx /xxx

cp libmyhellotest.so /lib

2.运行a.out【可以运行】                   ./a.out

./a.out

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

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

4.但若是把系统目录下的.so文件移除【相当于DLL(动态链接库)文件没有了】

   此时也就不能运行了

六:GDB调试

1.编译链接调试               gcc *.c -o main -g

gcc *.c -o main -g

2.进入调试                      gdb main

gdb main

1.在第几行打断点                     b x

b 3

2.运行                                       r

r

3.下一步                                   n

n

4.退出调试                                q

q

5.进入调试                                 gdb main

gdb main

1.查看列表(代码)                           l

l

2.在第几行打断点                         b x

b 5

3.运行                                           r

r

4.退出调试                                    q

q
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值