Makefile使用记录

一   错误记录

(1) g++  输出  *.o: file not recognized: 不可识别的文件格式,而且对应的输出文件超级大:

        原因可能是你使用g++编译了 [*.hpp] 文件。


二  用法记录

(1) notdir :

         用途: 去掉文件列表中每个文件的路径

         用法举例: $(notdir  $(wildcard .c   ./xpp/.cpp ) )

(2)wildcard

        用途:搜索指定位置符合条件的文件,返回结果列表

        用法举例 :   $(wildcard  *.c   ./xpp/*.cpp ),表示搜索当前目录中后缀名为 .c 以及子目录 xpp 中后缀名为 .cpp 的所有    文件。

(3) g++ 参数说明

         以一条语句说明解释之:g++ -std=c++11 -o Main $(OBJ)  -lgsl -lgslcblas -L libs/ -static  -I  $(includes)

       -std=c++11:编译特性;

       -o:告诉g++后面是要输出的文件 (-c 则表示只进行编译输出 目标文件,不进行链接)

        $(OBJ) g++的输入文件,应该是一系列的目标文件;

       -lgsl :表明要使用库 gsl.a 或 gsl.so ;

       -L  libs/  : 指定g++搜索库的目录,实际上就是gsl、gslcblas 所在的目录,此处为libs/;

       -I : 指定g++头文件搜索目录。

   (4) ldd MAIN:

         查看可执行程序MAIN是否成功地链接到动态库文件 。

   

  

三、Linux 编译项目经验

       编写源代码时养成良好的习惯,可以节约不少力气。用惯了Window 下的强大人性化的IDE,将代码迁移到Linux下时会遇到一系列代码编写问题。

      1  头文件和源文件必须分开,这样便于以后编译或者编译成库发布。

      2  函数的实现最好不要写在头文件中,不要随手写在包含类声明的头文件中。

     

     

           




你可能感兴趣的:(Linux)