Linux 內核與核心服務(MySQL、Apache、Nginx 等)均以 C/C++ 編寫。從源碼編譯安裝軟體時,若缺乏完整開發環境,常遭遇編譯錯誤。掌握環境組成可快速定位解決依賴缺失、版本不匹配等問題,是進階運維與開發的必修課。
| 組件 | 角色 | 關鍵包名 (Red Hat 系) |
|---|---|---|
| glibc (GNU C Library) | 核心運行庫,提供標準 C 函數實現 | glibc, glibc-common, glibc-devel, glibc-kernheaders |
| GCC (GNU Compiler Collection) | 編譯器套件,支援 C/C++/Objective-C/Fortran 等 | gcc, cpp, binutils |
| Kernel Headers (glibc-kernheaders) | 內核介面定義,用戶態程式調用系統調用的橋樑 | glibc-kernheaders |
.c — C 源碼.cc/.cpp/.cxx — C++ 源碼.h — 頭文件.i — 預處理後 C 源碼.s/.S — 組裝語言源碼 (S 經預處理).o — 目標文件.a — 靜態庫歸檔依賴關係鏈:gcc → cpp, binutils;glibc-devel → glibc, glibc-common, glibc-kernheaders。需 8 個包:
cpp-2.96-110.i386.rpm
binutils-2.11.93.0.2-11.i386.rpm
glibc-2.2.5-34.i386.rpm
glibc-kernheaders-2.4-7.14.i386.rpm
glibc-common-2.2.5-34.i386.rpm
glibc-devel-2.2.5-34.i386.rpm
gcc-2.96-110.i386.rpm
make-3.79.1-8.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/cpp-2.96-110.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/binutils-2.11.93.0.2-11.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-kernheaders-2.4-7.14.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-2.2.5-34.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-devel-2.2.5-34.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-common-2.2.5-34.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/gcc-2.96-110.i386.rpm
rpm -ivh ftp://mirror.example.com/redhat/7.3/en/os/i386/RedHat/RPMS/make-3.79.1-8.i386.rpm
預先下載所有 RPM 至本地目錄,執行 rpm -ivh *.rpm,RPM 會自動解決依賴順序。
編譯測試程式 hello.c:
gcc hello.c -o hello
./hello
安裝後典型文件分佈:
/usr/bin 或 /usr/local/bin/usr/include 或 /usr/local/include/usr/lib 或 /usr/local/lib系統通過 PATH、LD_LIBRARY_PATH、/etc/ld.so.conf 定位運行時依賴。
update-alternatives 或模組管理工具。arm-linux-gnueabihf-gcc 等。-g,配合 gdb、valgrind 定位記憶體錯誤。