64位系統下編譯PHP找不到庫檔案問題

2021-06-08 04:39:19 字數 1713 閱讀 2126

最近在centos 64位系統上編譯5.4.5版的php時,遇到報以下錯:

checking for dsa_get_default_method in -lssl... yes

checking for x509_free in -lcrypto... yes

checking for pkg-config... /usr/bin/pkg-config

configure: error: cannot find openssl's libraries

指定的編譯引數:

./configure \

--prefix=/usr/local/services/php-5.4.5 \

--with-config-file-path=/usr/local/services/php-5.4.5/etc \

--enable-fpm \

--enable-mbstring \

--enable-soap \

--enable-sockets \

--enable-zip \

--with-curl=/usr \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-gd \

--with-jpeg-dir=/usr \

--with-png-dir=/usr \

--with-zlib-dir=/usr \

--with-freetype-dir=/usr \

--with-openssl=/usr

找不到openssl的庫檔案,但我明明有安裝openssl-devel的,很奇怪,網上搜了一下,發現有很多朋友,遇到了同樣的問題,有些人說--with-openssl不指定路徑可解決,嘗試了一下,的確編譯通過了,但想不通,why?後來,又搜了一些文章來看,終於找出問題的根源:安裝的系統是64位的,而64位的使用者庫檔案預設是在/usr/lib64,而我編譯的時候,沒有指定--with-libdir=lib64,而編譯指令碼預設是lib,這當然是找不到的。

將編譯引數更改為:

./configure \

--prefix=/usr/local/services/php-5.4.5 \

--with-config-file-path=/usr/local/services/php-5.4.5/etc \

--enable-fpm \

--enable-mbstring \

--enable-soap \

--enable-sockets \

--enable-zip \

--with-curl=/usr \

--with-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-gd \

--with-jpeg-dir=/usr \

--with-png-dir=/usr \

--with-zlib-dir=/usr \

--with-freetype-dir=/usr \

--with-openssl=/usr \

--with-libdir=lib64

問題解決。

編譯64位dcmtk庫

用最新版的cmake生成原始碼專案,此處開發環境為win7x64的vs2012,注意在編譯選項中選擇 visual studio 11 2012 win64 必須選擇帶有 win 64 的一項!切勿選擇第三方庫,即 dcmtk 3.6.0 win32 i386 support md 裡的png xm...

linux 交叉編譯找不到庫檔案

網上大眾的作法這裡不做介紹 在編譯一些庫的時候可能某些工具會用到宿主機的,而這些工具在呼叫的時候會找和宿主機匹配的庫,而交叉編譯的庫是不能用的,遇見這種情況基本是解決不了的,但是可以通過configure 的選項去掉這些過程,舉個例子 我在編譯 udev 的時候 用到 g ir scanner 這個...

centos編譯libcurl庫找不到ssl的問題

configure with ssl usr local ssl ssl support no with 發現ssl預設只編譯了靜態庫,沒有動態庫,所以編譯ssl的時候執行 config shared make make install 然後設定動態庫路徑export ld library path...