两天学习笔记:
1. Linux下使用make进行编译和链接文件
2. Linux下使用gdb 对文件进行调试
3. Linux下编译调试-Window中编写的.c/.cpp代码的环境搭建 VMware(Redhat_Linux)+Windows(Eclipse + SecureCRT +Filezilla)
1.1 make在Windows下对应Mingw/bin/mingw32-make.exe
在CMD模式下使用 mingw32-make是可以的,但是要自己写makefile这个文件
1.2 需要自己制作makefile文件(makefile文件不是C的格式,千万不要出现;要用Tab而不是空格,另外//注释是不能用的,下文只是便于理解)
1.先明白对于1个文件我们怎么编译和链接
——设定hello.c
——直接gcc -o hello hello.c
2.再明白2个文件我们怎么做(add.c)
——链接2个.c文件,分三步
——gcc -o hello.o -c hello.c
——gcc -o add.o -c add.c
——gcc -o hello a.o add.o
3.Makefile最初方案(1个文件)
Start:hello.o (:依赖关系,hello.o必须存在,否则执行hello.o下的命令)
-gcc -o hello hello.o
hello.o:
-gcc -o hello.o -c hello.c
Clean:
-rm -f hello.o
4.Makefile带参数方案
——将gcc变成参数,便于改用g++
——CC=gcc 将gcc改为$(CC)
CC=gcc
Start:hello.o (:依赖关系,hello.o必须存在,否则执行hello.o下的命令)
$(CC) -o hello hello.o
hello.o:
$(CC) -o hello.o -c hello.c
Clean:
-rm -f hello.o
5.Makefile带参数升级方案
CC=gcc
SRCS=hello.c
OBJS=$(SRCS:.c=.o) // 把源文件的.c替换成.o
EXEC=hello
Start:$(OBJS) (:依赖关系,hello.o必须存在,否则执行hello.o下的命令)
$(CC) -o $(EXEC) $(OBJS)
$(OBJS):
$(CC) -o $(OBJS) -c $(SRCS)
Clean:
-rm -f $(OBJS)
6.Makefile链接多个文件方案
.SUFFIXES:.c .o //将.c与.o建立关联
CC=gcc
SRCS=hello.c\
add.c
OBJS=$(SRCS:.c=.o) // 把源文件的.c替换成.o
EXEC=hello
Start:$(OBJS) (:依赖关系,hello.o必须存在,否则执行hello.o下的命令)
$(CC) -o $(EXEC) $(OBJS)
.c.o:
$(CC) -o $@ -c $<
Clean:
-rm -f $(OBJS)
1.3 eclipse-cpp-galileo-新建helloworld工程自带makefile文件
一个月前仍然不会使用Eclipse-cpp,现在知道了,其实是自己当时的水平还差着一大截;
当然现在还是不太会用它
2.1 在windows下,有很多的IDE,IDE中就有Debug即调试的功能
例如可以在CMD状态下,也可以找到mingw/gdb.exe文件,并运行gdb -q hello.exe 进入gdb调试
2.2 gdb常用命令
3.1 利用Windows图形界面功能强大的优势,在Windows下用IDE编辑代码,对于大量的.c文件也便于组织(VI无法用鼠标,不能输汉字)
Windows下的IDE可任意选用,喜欢哪个都行
但是要注意几点:1. 编码,Linux下默认是UTF-8,而中文的Windows一般默认GBK,因而Win下的代码有可能到Linux下不识别
2. 格式,linux下换行符号与Windows下是不一样的,windows下/r/n 所以要选用Unix选项
3.2 需要一个软件来远程登录Linux服务器进行操作,在 百度中搜索"Secure CRT" 下载-打开-
3.3 需要一个FTP的软件,在百度中搜索“FileZilla”下载-打开-
注意协议一定是SFTP,登录类型选正常
端口可以不填
这样我们的开发环境就搭建好了~
学无止境~自己勤勉~