自己写个C程式

发表于:2007-07-04来源:作者:点击数: 标签:
你应该不会期待在 Linux 有 GW/Qbasic 吧?? 在 Un*x 中, 系统内定的语言是 C, 不管你是喜欢还是讨厌它. 当然还有其它的语言可以用 (FORTRAN, Pascal, Lisp, Bacic .. 但没有 Turbo Pascal ^Q^ ). 假设你懂得 C.. 如果你曾经被 Turbo C++ 或是它在 DOS 下的兄

  你应该不会期待在 Linux 有 GW/Qbasic 吧?? 在 Un*x 中, 系统内定的语言是 C,
  不管你是喜欢还是讨厌它. 当然还有其它的语言可以用 (FORTRAN, Pascal, Lisp, Bacic
  .. 但没有 Turbo Pascal ^Q^ ).
  
  假设你懂得 C.. 如果你曾经被 Turbo C++ 或是它在 DOS 下的兄弟们宠爱过, 那这里
  有两句话恐怕不啻晴天霹雳: Linux 下的 C 编译器叫作 gcc, 但, 它没有 IDE 环境,
  没有线上求助系统, 没有整合式除错器,..等等. 只有一个命令列的编译器, 但强大
  且有效率. 以下这个命令可以编译你已写好的 hello.c :
   $ gcc hello.c
  这样会产生一个 a.out 的执行档. 如果你想让 gcc 造出其它档名的执行档, 键入
   $ gcc -o hola hello.c
  要联结一个程式库, 你要在 gcc 後加上一个 -l<arg> 的选项. 比如说要联结 math
  library
   $ gcc -o mathprog mathprog.c -lm
  ( -l<arg> 会迫使 gcc 联结 /usr/lib/lib<arg>.a; 因此, -lm 会联结
  /usr/lib/libm.a)
  
  对小程式来说, 这是一个好方法. 但是若程式是由数个 source files 组成, 我们可能
  会需要 make 这个程式. 假设我们已经写好一个语法分析程式 parser.c, 它 #include
  了两个 .h : parser.h , xy.h. 现在, 有个 calc.c 需要使用到 parser.c 中的功能.
  这样该怎麽办??
  
  我们可以写一个叫作 makefile 的档案, 告诉编译器所有 source 和 object files
  间的关系, 在这个例子里,
  
   # This is makefile, used to compile calc.c
   # Press the <TAB> key at appropriate positions!
  
   calc: calc.o parser.o
   <TAB>gcc -o calc calc.o parser.o -lm
   # calc depends on two object files: calc.o and parser.o
  
   calc.o: calc.c parser.h
   <TAB>gcc -c calc.c
   # calc.o depends on two source files
  
   parser.o: parser.c parser.h xy.h
   <TAB>gcc -c parser.c
   # parser.o depends on three source files
  
   # end of makefile.
  
  储存, 然後键入
   $ make
  以便编译程式. 或者, 这个档案被存在 calc.mak 里, 那麽就必需
   $ make -f calc.mak
  当然, 请参阅 Man pages 以得到更多的资讯.
  
  此外, 某些函数的用法在 man pages 可以找得到, 例如
   $ man printf
  

原文转自:http://www.ltesting.net