gcc:编译c程序 g++:编译c++程序
第一种
1)ls查看为test.c
2)linux终端编译c代码,gcc test.c -o app 然后ls为app test.c
3)运行./app 输出结果
第二种
1)gcc test.c为a.out app
2)./a.out运行 输出结果
常用命令:
返回上一级目录:cd..
递归复制calc目录和 library目录到lesson05文件夹:cp -r calc/ library/ ../lesson05
查看当前目录有哪些文件:ls
批量删除:rm *.什么结尾的
清屏:clear:ctrl+L
拷贝calc下的libcalc.a文件到当前目录的lib文件夹下:cp ../calc/libcalc.a ./lib/
静态库在程序的链接阶段被复制到了程序中
动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用
##制作并使用静态库
1)gcc -c add.c div.c sub.c mult.c生成.o文件
2) ar rcs libcalc.a add.o div.o nult.o sub.o生成libcalc.a文件
3)将libcalc.a文件移动到lib目录下
4)gcc main.c -o app -I ./include/ -l calc -L./lib 生成app文件
5)./app运行
##制作并使用动态库
1)gcc -c -fpic add.c div.c mult.c sub.c生成.o文件
2)gcc -shared add.o sub.o mult.o div.o -o libcalc.so生成libcalc.so文件
3) 将libcalc.so移动到lib目录下
3) gcc main.c -o main -I include/ -L lib/ -l calc生成main文件
4) 进入动态库路径之后pwd: /home/nowcoder/Linux/lesson06/library/lib
5) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nowcoder/Linux/lesson06/library/lib
6) echo $LD_LIBRARY_PATH输出查看
7)ldd main 查询动态库依赖有了没
8)./main运行
上面是会话退出就失效了
用户级别长久配置home目录
1)vim .bashrc
2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nowcoder/Linux/lesson06/library/lib
3)source .bashrc
系统级别永久配置
1)sudo vim /etc/profile
2)同上
3)source /etc/profile
makefile设置C文件的执行顺序
vim下面set nu显示行号
vim下e更新数据
gcc test.c -o test -g
gdb可执行程序启动 q退出
break 16 if i=3条件断点
next不进函数体,step进函数体
display自动变量
文件系统IO
标准C库:缓冲区减少与磁盘交互的次数,提升效率
Linux:没有缓冲区
程序:不占用内存空间,占用磁盘空间
进程:占用内存空间,运行的程序
一个进程的开启,会对应一段虚拟地址空间,由MMU(内存管理单元)映射到物理空间中
软连接信息lstat:文件路径 ,stat文件本身信息