首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Ubuntu OpenSSL 開發找不到頭文件:安裝 libssl-dev 而非手動編譯

     編輯:程式設計綜合問答

問題現象

#include <openssl/pem.h>  // 報錯:找不到文件
// 但 /usr/local/ssl/include/openssl/pem.h 確實存在

手動下載 OpenSSL 源碼 ./config && make && make install 安裝到 /usr/local/ssl,編譯時 -I/usr/local/ssl/include 仍報錯。

根因

  • Ubuntu 系統包管理器安裝的 OpenSSL 運行時庫在 /usr/lib/x86_64-linux-gnu/,頭文件在 /usr/include/openssl/(由 libssl-dev 提供)。
  • 手動編譯安裝到 /usr/local/ssl 導致**兩套 OpenSSL 共存**,包含路徑、庫路徑、運行時加載路徑極易混亂。
  • 編譯命令 -L/usr/local/ssl/include -I/usr/local/ssl/lib **參數反了**:-I 指定頭文件路徑,-L 指定庫路徑。

正解:一條命令搞定

sudo apt update && sudo apt install libssl-dev

之後直接編譯:

gcc -o try try.c -lssl -lcrypto

無需任何 -I/-L,系統默認路徑已配置好。

若必須用特定版本(如 3.0)

  1. 安裝對應版本 libssl3t64 / libssl-dev(Ubuntu 22.04+ 默認 OpenSSL 3)。
  2. 或用 update-alternatives 切換版本。
  3. 實在需自編譯:./config --prefix=/opt/openssl-3.0 --openssldir=/etc/ssl,並設置 PKG_CONFIG_PATH=/opt/openssl-3.0/lib/pkgconfig,用 pkg-config --cflags --libs openssl 獲取正確編鏈參數。

驗證安裝

pkg-config --cflags --libs openssl
# 輸出示例:-I/usr/include -L/usr/lib/x86_64-linux-gnu -lssl -lcrypto

gcc -o try try.c $(pkg-config --cflags --libs openssl)

總結

Ubuntu 開發 OpenSSL **直接 apt install libssl-dev**,別手動編譯安裝。系統包自動處理頭文件、庫、pkg-config、多架構路徑,省去 99% 的找不到頭文件/庫錯誤。編譯用 pkg-config 獲取參數最標準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved