自己写个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