常用的编译器:
- 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 <stdio.h>
#include <stdlib.h>
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;i<input;i++)
f();
return 0;
}
void f()
{
int *a;
a=(int*)malloc(10*sizeof(*a));
free(a);
return;
}