目录
一:根目录 & 系统命令
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