萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Unix 環境高級編程 (APUE) 找不到 apue.h?下載、修改、安裝到系統標頭目錄完整解決

學習《UNIX 環境高級程式設計》(APUE) 時,書中範例程式引用作者自訂的 apue.h 與 error.c,系統標頭目錄預設不含此檔案,導致編譯失敗。本文提供標準解決流程:下載原始碼套件、修改 apue.h 內含 error.c、複製至 /usr/include、驗證編譯。

apue.h 安裝示意圖

根本原因

apue.h 非系統標準頭檔,為書作者封裝常用標頭 (stdio.h, stdlib.h, unistd.h...) 與錯誤處理函式 (err_sys, err_quit 等) 的便利標頭。

解決步驟

  1. 下載原始碼套件
    至 APUE 官網 或 GitHub apue.3e 下載 apue.h 與 error.c (或完整 src.tar.gz)。
  2. 切換 root 權限 (寫入 /usr/include 需 root)
    sudo -i
  3. 修改 apue.h 內含 error.c
    編輯 apue.h,在 #endif /* _APUE_H */ **之前**加入:
    #include "error.c"
    存檔。
  4. 複製至系統標頭目錄
    cp apue.h /usr/include/apue.h
    cp error.c /usr/include/error.c
  5. 驗證編譯
    gcc -o test test.c (測試書中範例)
    應成功編譯執行。

替代方案:專案本地引用 (不污染系統)

# 專案目錄結構
myproject/
├── include/
│   ├── apue.h
│   └── error.c
└── src/
    └── test.c

# test.c 中
#include "../include/apue.h"

# 編譯
gcc -I../include -o test src/test.c
  • 優點:專案獨立、版本鎖定、無需 root、適合團隊協作。
  • 建議:現代開發採用此方式,配合 CMake/Makefile 管理 include_directories。
  • 常見問題

    • fatal error: apue.h: No such file or directory:未安裝至 /usr/include 或 -I 路徑錯誤。
    • undefined reference to 'err_sys':apue.h 未正確 #include "error.c" 或 error.c 未編入連結。
    • 32/64 位元相容:書中範例多為 32 位元時代,64 位元系統注意 long vs int 差異。

    安裝 apue.h 即可順利編譯 APUE 經典範例,深入掌握 UNIX 系統程式設計精髓。

copyright © 萬盛學電腦網 all rights reserved