高階Linux程式設計第一章 入門

2021-08-30 14:36:36 字數 2650 閱讀 5704

#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版本,就是經常聽到的 紅帽作業系統 一直致...