1. 程式人生 > >執行apue (unix 環境高階程式設計)第一個例子

執行apue (unix 環境高階程式設計)第一個例子

拿到APUE第三版,大家肯定都是想驗證書上的程式碼,用除錯程式碼的過程來學習本書。但是Linux不像Windows,linux是一個free(自由)軟體,free軟體帶來的問題就是執行一個小小的程式都要折騰半天。現在把執行第一個程式的過程記錄下來,以供後來查閱。

第一步,當然是下載書中的原始碼,省的自己費盡的敲,下載的是第三版,apue.3e,這裡不得不吐槽一下,裡面的程式碼組織很亂,不是按照章節列出的,不知是不是我下載的問題,還是作者故意為之。

第二步,apue.3e資料夾裡有makefile檔案,肯定要執行make命令了,可惜功力有限,目前看不懂這些makefile的功能,需要惡補一下makefile的知識了。

第三步,意料之中的編譯不通過,錯誤提示:can,t find -lbsd,解決辦法是新增libbsd.a的靜態連結庫。

第四步,執行apt-get update,然後apt-get install libbsd-dev,在執行apt-get update過程中,可能會遇到更新不成功的情況,一般是更新軟體伺服器的問題,只能找個比較好的ubuntu版本了,版本中設定了比較好用的伺服器,否則自己找伺服器也是苦逼的事情。

第五步,上述執行成功後,再make,OK。

第六步,將apue.h 拷貝到/usr/include/ 將./lib/libapue.a 拷貝到/usr/local/lib/ 為什麼要將libapue.a移到/usr/local/lib中呢?原因是libapue.a是apue.h標頭檔案中包含的所有函式及巨集定義的具體實現,是一個靜態連結庫。

第七步,進入/apue.3e/intro,刪除原來的ls1,然後編譯ls1.c,然後就是十有八九的報錯,undefined reference to `err_quit' undefined reference to `err_sys' ,真是苦逼,處處是坑的感覺。

第七步,/usr/include 下新建一個名為myerr.h的檔案,檔案內容我上傳到csdn中

第八步,再編譯ls1.c,終於成功,可以執行./ls1 /home,可以看到打印出目錄裡的檔案了。

這些磕磕絆絆的過程確實和Windows下程式設計完全不是一個感覺,需要對Linux的系統及命令非常熟悉。

相關推薦

執行apue (unix 環境高階程式設計)第一例子

拿到APUE第三版,大家肯定都是想驗證書上的程式碼,用除錯程式碼的過程來學習本書。但是Linux不像Windows,linux是一個free(自由)軟體,free軟體帶來的問題就是執行一個小小的程式都要折騰半天。現在把執行第一個程式的過程記錄下來,以供後來查閱。 第一步,當

linux下執行UNIX環境高階程式設計》的第一程式時原始碼編譯出錯的處理方法

前幾天買了《UNIX環境高階程式設計》這本書,想好好學習下linux的程式設計。誰知道看到第一個列出指定目錄的內容的那個例子,其實就是shell中 ls 的內容,打好程式碼要執行時一直出問題。後來在網上找了挺多的解決方法,終於解決了。先把方法貼上。 先在終端裡面輸入 vi

UNIX環境高階程式設計》(APUE) 筆記第十一章 - 執行

# 11 - 執行緒 [Github 地址](https://github.com/XutongLi/Learning-Notes/blob/master/APUE/11-%E7%BA%BF%E7%A8%8B.md) *** ## 1. 執行緒概念 典型的 **UNIX程序** 可以看成只有一個 **控制

UNIX環境高階程式設計(3) 第一

1.1 引言 所有作業系統都為他們所執行的程式提供服務。典型的服務包括:執行新程式、開啟檔案、讀檔案、分配儲存區以及獲取當前時間等。 1.2 UNIX體系結構 層級從裡向外擴充套件應用。 1. 核心:可將作業系統定義為一種軟體,即稱為核心,它控制

UNIX環境高階程式設計》 —— 書中例項編譯、執行

想認真學習《UNIX環境高階程式設計》的人士可能都想把書中的例項給敲一遍,執行看一下效果。但對於新手來說,可能會有一定的困難,因為例子中用到的標頭檔案和一些函式不知道在哪裡,編譯可能也會出問題。這邊文章就是以一個例項來介紹如何執行這本書中的例項。 但這樣還不行,如果直接編

UNIX環境高階程式設計——執行緒私有資料

執行緒私有資料(Thread-specific data,TSD):儲存和查詢與某個執行緒相關資料的一種機制。 1、在程序內的所有執行緒都共享相同的地址空間,即意味著任何宣告為靜態或外部變數,或在程序堆宣告的變數,       都可以被程序內所有的執行緒讀寫。 2、一個

unix 環境程式設計第一例子

 #include<stdio.h> // for printf() NULL //#include"error.c" //#include"apue.h" #include<dirent.h> //for DIR dirent ope

UNIX環境高階程式設計學習環境搭建---apue.h

本菜剛剛學習UNIX下高階程式設計,無奈搭建本書程式設計環境時遇到不少問題。幸好網上有各種大神的解決辦法讓我最終解決了問題。在這裡感謝為LINUX開源作業系統奮鬥的大神。 不過話說回來,網上大都是針對UNIX高階程式設計第二版的標頭檔案搭建,現在對於第三版來說,有些過時,因

UNIX環境高階程式設計的學習(二)

UNIX系統程序控制程式說明 該程式從標準輸入讀取命令,然後執行這些命令,程式涉及到的函式主要用法包括: fgets的用法 execlp的用法 waitpid的用法 程式如下: #include "apue.h" #include <sys/wai

UNIX環境高階程式設計的學習(一)

UNIX環境高階程式設計第一個例子的編譯 這本書中有很多的例子,為了加深理解,習慣性自己敲一遍程式碼然後看執行結果,再去理解其中的知識點,但是在虛擬機器下如何編譯這些程式碼呢,需要以下幾步: 下載並解壓縮apue.3e檔案包 在“apue.h”中最後一行加:#inclu

[UNIX環境高階程式設計] 檔案和目錄

1 引言 上文圍繞了普通檔案I/O進行了討論——開啟檔案、讀檔案或寫檔案。本文將描述檔案系統的其他特徵和檔案的性質。將從stat函式開始,stat結構中的大多數成員都是基本系統資料型別,逐個分解stat結構的每一個成員以瞭解檔案的所有屬性。 使用stat函式最多的地方可能就是[ls -l

[Unix環境高階程式設計] 檔案I/O

1.引言 UNIX系統中的大多數檔案I/O只需要用到5個函式:open、read、write、lseek以及close,這裡所涉及到的函式經常被稱為不帶緩衝的I/O1。只要涉及在多個程序之間共享資源,原子操作的概念就變得非常重要,我們將通過I/O和open函式的引數來討論此概念,dup、

UNIX環境高階程式設計(第三版) 第五章筆記

5.2 流和物件 只有兩個函式可以改變流的定向: freopen函式清楚一個流的定向,fwide函式可用於設定一個流的定向。 #include <stdio.h> #include <wchar.h> int fwide(FILE

UNIX環境高階程式設計(三) 第六章

6 系統資料檔案和資訊 6.2 口令檔案 #include <pwd.h> struct passwd *getpwuid(uid_t uid); /* 檢視使用者登入名 */ struct passwd *getpwnam(const

UNIX環境高階程式設計(3) 第三章

3 檔案I/O 3.1 引言 3.2 檔案描述符 檔案描述符是一個標示,非負整數,類似於windows裡的控制代碼,為了與標準C保持一致(標準C裡的檔案的讀寫都是通過File Pointer)UNIX採用了這樣的三級結構,我混淆於檔案描述標誌和檔案

UNIX環境高階程式設計(3) 第八章

8 程序控制 8.1 引言 8.2 程序標識 #include <unistd.h> pid_t getpid(void); return: 呼叫程序的程序ID pid_t getppid(void

UNIX環境高階程式設計(3) 第二章

2.2UNIX標準化 2.2.1 ISO C 國際標準化組織(International Organization for Standardization,ISO) 國際電子技術委員會(International Electrotechnical Co

UNIX環境高階程式設計-概述

    檔案I/O 基本的系統呼叫函式 open,create,close,lseek,read,write 以及原子性的pread,pwrite 複製檔案描述符 dup 同步重新整理fsync,fdatasync,sync 更改已經開啟的檔案屬性 fcntl,雜物箱

UNIX環境高階程式設計》中涉及到一段程式碼,ourhdr.h檔案,以後備用!

#ifndef __ourhdr_h   #define __ourhdr_h   #include    <errno.h>               /*for definition of errno                      */ #inc

Unix環境高階程式設計閱讀之一——Unix\Linux基礎知識

所有的作業系統都為它們所執行的程式提供服務。典型的服務包括:執行新程式、開啟檔案、讀檔案、分配儲存區以及獲得當前時間等。 UNIX體系結構示意圖 作業系統是用來控制計算機的硬體資源,提供程式執行環