Software-Installation

如何在 Linux Mint 17 上安裝 BPG(更好的攜帶式圖形)?

  • April 16, 2019

如何在 Linux Mint 17 上安裝 BPG(更好的攜帶式圖形)?我從Fabrice Bellard 的網站下載了 tar.gz 文件。自述文件說,

編輯 Makefile 以更改編譯選項(Linux 的預設編譯選項應該沒問題)。輸入“make”進行編譯,輸入“make install”安裝編譯好的二進製文件。

我沒有編輯Makefile. 我在目錄中打開終端並執行make. 它返回以下錯誤:

gcc -g -Wl,--gc-sections -o bpgdec bpgdec.o libbpg.a -lpng -lrt -lm -lpthread
bpgdec.o: In function `png_save':
/home/ghort/Downloads/libbpg-0.9.5/bpgdec.c:118: undefined reference to 
 `png_set_longjmp_fn'
collect2: error: ld returned 1 exit status
make: *** [bpgdec] Error 1

我想我在別處讀到我需要安裝 libpng16 實驗性的,但我不確定。

libbpg取決於 PNG 庫的 1.6 版本,您無法apt-get在 Linux Mint 17 上安裝該庫。該庫不兼容,libpng12需要從原始碼安裝(我使用的是1.6.16版本)

額外的複雜情況是,如果您安裝 PNG 1.6,make即使您將 PNG 1.6 配置libbpg為. 而且您不能只是解除安裝並依賴它,而這些也是編譯所必需的。libpng12-dev``configure --prefix=/usr``libpng12-dev``libsdl-image1.2-dev``libsdl1.2-dev``libbpg

您可能還可以下載和編譯libsdl-imagelibsdl1程式碼而不安裝它們的-dev包。我沒有遵循這條路線,我只是暫時刪除了文件(不是包),libpng12-dev並在完成後重新安裝它們(你應該可以在 Linux Mint 17 上複製並粘貼它):¹

# install dev packages needed 
sudo apt-get install -y libsdl-image1.2-dev libsdl1.2-dev libjpeg8-dev
#### temporarily remove the files from the libpng12 package
# this gives error messages on the directories (that cannot be removed this
# way, which can be ignored.
sudo rm $(dpkg -L libpng12-dev)

# download, configure, make and make install PNG 1.6
wget -O libpng-1.6.16.tar.xz 'http://downloads.sourceforge.net/project/libpng/libpng16/1.6.16/libpng-1.6.16.tar.xz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flibpng%2Ffiles%2Flibpng16%2F1.6.16%2F&ts=1424607004&use_mirror=garr'
tar xf libpng-1.6.16.tar.xz
pushd libpng-1.6.16
./configure --prefix=/usr
make -j
sudo make install
popd

# download, make and make install BPG
wget http://bellard.org/bpg/libbpg-0.9.5.tar.gz
tar xf libbpg-0.9.5.tar.gz
pushd libbpg-0.9.5
make -j
sudo make install
popd

# reinstall libpng12-dev
sudo apt-get install --reinstall libpng12-dev

當然,並行安裝 PNG 1.6libpng12-dev並適應libbpg.


¹您也可以嘗試建構libpng16-dev,但安裝它可能只是刪除-dev依賴於的軟體包libpng12-dev,我沒有嘗試過。

引用自:https://unix.stackexchange.com/questions/181735