fatal error: security/pam_modules.h: No such file or directory
#include <security/pam_modules.h>
^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
security/pam_modules.h 屬於 PAM(Pluggable Authentication Modules)開發套件,編譯需連結 libpam 並包含其標頭檔。預設最小安裝環境通常僅含執行期庫 libpam.so,缺少 -devel 套件。
| 發行版 | 安裝指令 | 驗證指令 |
|---|---|---|
| Debian / Ubuntu / Linux Mint | sudo apt-get update && sudo apt-get install libpam0g-dev | ls /usr/include/security/pam_modules.h |
| CentOS / RHEL / Rocky / AlmaLinux | sudo yum install pam-devel | ls /usr/include/security/pam_modules.h |
| Fedora | sudo dnf install pam-devel | ls /usr/include/security/pam_modules.h |
| openSUSE | sudo zypper install pam-devel | ls /usr/include/security/pam_modules.h |
| Arch Linux | sudo pacman -S pam | ls /usr/include/security/pam_modules.h |
| Alpine Linux | sudo apk add linux-pam-dev | ls /usr/include/security/pam_modules.h |
$ ls -l /usr/include/security/pam_modules.h
-rw-r--r-- 1 root root 8432 Mar 10 2023 /usr/include/security/pam_modules.h
$ gcc -E -xc - <<< '#include <security/pam_modules.h>' | head -5
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/security/pam_modules.h"
# 30 "/usr/include/security/pam_modules.h" 2
# 假設你將 pam 源碼編譯安裝至 /opt/pam
export CFLAGS="-I/opt/pam/include"
export LDFLAGS="-L/opt/pam/lib -lpam"
./configure --with-pam=/opt/pam
libpam0g 卻還是報錯:那是執行期庫,需安裝 libpam0g-dev(Debian/Ubuntu)或 pam-devel(RHEL 系)。pam-devel 已安裝在 sysroot 中(如 /opt/toolchain/arm-linux-gnueabihf/sysroot/usr/include/security)。dockerfile 中加入 RUN apt-get update && apt-get install -y libpam0g-dev(或對應基底映像指令)。缺少 security/pam_modules.h 純屬開發套件未裝,對應發行版安裝 pam-devel / libpam0g-dev 即可秒解。記得同步安裝 gcc、make 等建置工具鏈,避免後續報錯。