常用的编译器:
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主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 可让被调试的程序在你所指定的调置的断点处停住。 当程序被停住时,可以检查此时你的程序中所发生的事。 动态的改变你程序的执行环境。
vlagrindValgrind是在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; }