Ubuntu 16.04的ffmpeg編譯啟用gnutls

我在上一篇用docker-compose編譯ffmpeg時,使用--enable-openssl作為--enable-gnutls的替代。

這裡是遭遇了一個libz的錯誤

/usr/bin/ld: attempted static link of dynamic object `/usr/lib/x86_64-linux-gnu/libz.so'

這部份從build log看起來是因為檢測libgnutls28-dev套件時會使用到shared版本的libz,就算我在前面已經編譯了static版本的libz,它也還是找了shared版本的libz來檢測,導致config不過。

這也意謂著,我要使用啟用gnutls就須要重編譯整個套件,下面就介紹若要啟用gnutls該如何處理。

先感謝這篇的作者讓我先了解後續會遭遇的錯誤和要下載的套件。

編譯gnutls的script

這部份就用gist來呈現比較好看懂

可以看到相依套件有gmp, nettle, libtasn1, libunistring, libffi這幾個

在編譯相依套件時,還有遭遇p11-kit無法編譯成static版的問題
configure: error: p11-kit cannot be used as a static library

官方github上有回應一些理由所以無法變成static版,而且gnutls也將p11-kit列為選擇性套件,所以我編譯gnutls時就直接上了選項不要編譯p11-kit的選項

--without-p11-kit

而在ffmpeg中用--enable-gnutls啟用gnutls,也可正常完成完成編譯。

留言