关于makefile的一些学习经验

来源:互联网 发布:linux ssh端口转发 编辑:程序博客网 时间:2024/05/04 18:29

   近来一周都在折腾在linux下给一个系统写一个makefile,由于对makefile没啥经验,就把过程中遇到的学到的都记录下来。

  一:在makefile里面,很多命令都在命令前加“@”,这表示应用shell的脚本命令(例如:@echo),因为make缺少很多一些shell才有的命令。

二:$(MAKE) -C $(XML_PATH)的意思是进入XML-Path目录执行相应的makefile。

三:ar指令用于生成linux下的静态库文件(.a)。

     .o.a.so文件都是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。

优点:程序模块化,容易重新编译,方便升级。

分类:静态函数库(对应.a文件)、共享函数库(对应.so文件,类似于Windowsdll文件)、动态加载函数库(对应.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)


0 0
原创粉丝点击