#include
#include 「reciprocal.hpp」
int main (int argc, char **argv)
int i;
i = atoi (argv[1]);
printf (「the reciprocal of %d is %g\n」, i, reciprocal (i));
return 0;
#include
#include 「reciprocal.hpp」
double reciprocal (int i) {
// i should be non-zero.
assert (i != 0);
return 1.0/i;
#ifdef __cplusplus
extern 「c」 {
#endif
extern double reciprocal (int i);
#ifdef __cplusplus
#endif
% gcc -c main.c
% g++ -c reciprocal.cpp
% g++ -c -i ../include reciprocal.cpp
對於如下程式definemacro.c:
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char** argv){
int i = 3;
#ifdef changevalue
i = 4;
#endif
printf("i = %d\n", i);
printf("pt = %f\n", pi);
如果編譯時命令行為gcc definemacro.c,會報『pi』 undeclared錯誤。
如果編譯時命令行為gcc -d pi=3.14 definemacro.c,則輸出如下:
i = 3
pt = 3.140000
如果編譯時命令行為gcc -d pi=3.14 -d changevalue definemacro.c,則輸出如下:
i = 4
pt = 3.140000
% g++ -c -o2 reciprocal.cpp
% g++ -o reciprocal main.o reciprocal.o
例如欲鏈結庫libpam.a,則用如下命令列,編譯器會自動加上字首lib和字尾.a
% g++ -o reciprocal main.o reciprocal.o –lpam
% g++ -o reciprocal main.o reciprocal.o -l/usr/local/lib/pam –lpam
reciprocal: main.o reciprocal.o
g++ $(cflags) -o reciprocal main.o reciprocal.o
main.o: main.c reciprocal.hpp
gcc $(cflags) -c main.c
reciprocal.o: reciprocal.cpp reciprocal.hpp
g++ $(cflags) -c reciprocal.cpp
clean:
rm -f *.o reciprocal
% make cflags=-o2
gcc -o2 -c main.c
g++ -o2 -c reciprocal.cpp
g++ -o2 -o reciprocal main.o reciprocal.o
% make cflags=-g
gcc -g -c main.c
g++ -g -c reciprocal.cpp
g++ -g -o reciprocal main.o reciprocal.o
% gdb reciprocal
(gdb) run
starting program: reciprocal
(gdb) where
#0 __strtol_internal (nptr=0x0, endptr=0x0, base=10, group=0) at strtol.c:287
#1 0x40096fb6 in atoi (nptr=0x0) at ../stdlib/stdlib.h:251
#2 0x804863e in main (argc=1, argv=0xbffff5e4) at main.c:8
(gdb) up 2
#2 0x804863e in main (argc=1, argv=0xbffff5e4) at main.c:8
8 i = atoi (argv[1]);
(gdb) print argv[1]
$2 = 0x0
(gdb) break main
breakpoint 1 at 0x804862e: file main.c, line 8.
(gdb) next
9 printf (「the reciprocal of %d is %g\n」, i, reciprocal (i));
(gdb) step
reciprocal (i=7) at reciprocal.cpp:6
6 assert (i != 0);
第一章 入門
第一章 入門。1.linux應用程式表現為2種特殊型別的檔案 可執行檔案和指令碼檔案,對應windows下的。exe和批處理。linux不要求可執行檔案或指令碼有特殊的餓副檔名,檔案系統屬性用來表明乙個檔案是否為可執行程式。2.我們是與乙個叫bash的指令碼進行互動的,指令碼裡可執行檔案的執行要麼在...
第一章 Linux系統入門
一,本章內容 1,常見 linux 登入方式及適用範圍 2,常見關閉,重啟系統的命令及用範圍 3,linux 系統命令幫助 4,人機互動 shell 及分類,bash shell 的基本功能 5,管道及輸入輸出 備註 本linux系統為 rhel5.3 二,常見linux登入方式及適用範圍 1,圖形...
第一章,linux快速入門
人生最可怕的是在自以為舒適的地方待得太久,等到外界改變來的時候,已經晚了,我們不能像溫水煮青蛙一樣,待在溫水裡,覺察不到周圍環境的變化,最終被社會淘汰 linux作業系統具備以下優點 linux作業系統發行版 red hat linux,是最著名的linux版本,就是經常聽到的 紅帽作業系統 一直致...