Unix中常用的编译系统及其简单的使用

常用的编译器:

  • C编译器: cc, gcc (GNU C) 等.
  • Fortran 编译器: f77, fc, g77 (GNU Fortran), f90 (Fortran 90) 等.

可用man查看使用手册, 如: man cc, man f77等等.

命令行形式:

$cc  [options]  files  [options]
$f77  [options]  files  [options]

命令行选项:

  • c: 只编译, 不链接, 即只生成.o文件.

  • o filename: 指定输出文件名, 缺省为*.o, a.out等.

  • Ipath: 指定(增加)包含文件(如*.h)的搜索目录.

  • Lpath: 指定(增加)库文件的搜索目录.
  • lname: 与库文件libname.a(.so)链接.
  • 优化开关: -O, -O1, -O2, -O3, 等等.

例:

f77  -O2  -o  prog  file1.f  file2.c file3.o  file4.a


f77  -c  file.f


f77  -o  out  file.o

f77  -c  -I/usr/local/mpi/include file.f


f77  -o  prog  -L/usr/local/mpi/lib     file.o  -lmpi 
(等价于:f77  -o  prog  file.o  /usr/local/mpi/lib/libmpi.a)

两个调试工具:

  • GDB GDB是GNU开源组织发布的强大的UNIX下的程序调试工具。

一般来 说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
可让被调试的程序在你所指定的调置的断点处停住。 当程序被停住时,可以检查此时你的程序中所发生的事。 动态的改变你程序的执行环境。

  • vlagrind

Valgrind是在linux系统下开发应用程序时用于调试内存问题的工具。

valgrind  --tool=memcheck 
 --leak-check=yes  \
 --show-reachable=yes   \
 --run-libc-freeres=yes \ ./yourprogram

附一个小程序以供大家练习:

#include 
#include 
void f();
int main(int argc,char* argv[])
{
    int input =0;
        int i;
    printf("Input an integer:");
    scanf("%d", &input);
    printf("The integer you input is %d\n", input);
        for(i=0;ireturn 0;
}

void f()
{
        int *a;
        a=(int*)malloc(10*sizeof(*a));
        free(a);
        return;
}

你可能感兴趣的:(Linux与并行计算)