近来一周都在折腾在linux下给一个系统写一个makefile,由于对makefile没啥经验,就把过程中遇到的学到的都记录下来。
一:在makefile里面,很多命令都在命令前加“@”,这表示应用shell的脚本命令(例如:@echo),因为make缺少很多一些shell才有的命令。
二:$(MAKE) -C $(XML_PATH)的意思是进入XML-Path目录执行相应的makefile。
三:ar指令用于生成linux下的静态库文件(.a)。
优点:程序模块化,容易重新编译,方便升级。
分类:静态函数库(对应.a文件)、共享函数库(对应.so文件,类似于Windows的dll文件)、动态加载函数库(对应.o文件,相当于Windows里的.obj文件)
四:linux下设置环境变量:export AMDAPPSDK="/opt/AMDAPPSDK-3.0-0-Beta/".
五:malloc、calloc、realloc和alloca的区别
1:malloc是标准的在堆中开辟新的空间,即动态内存分配,例如(char* p=(char*)malloc(sizeof(char))),使用后需要free(p)来释放内存。
2:calloc也是开辟动态内存空间,例如(char* p=(char*)malloc(10,sizeof(char))),但是calloc会把分配的内存初始化为为0,。使用后需要用free(p)来释放内存。
3:realloc对指针空间做重新定义,新的空间必须大于原来的空间
4:alloca是最特殊的开辟栈空间方法,优点是当离开调用这个函数的时候,栈所分配的空间会自动释放(也就是free)