web-dev-qa-db-ja.com

Linux Mint 17にBPG(Better Portable Graphics)をインストールするにはどうすればよいですか?

Linux Mint 17にBPG(Better Portable Graphics)をインストールするにはどうすればよいですか? Fabrice BellardのWebサイト からtar.gzファイルをダウンロードしました。 ReadMeファイルには次のように書かれています。

Makefileを編集して、コンパイルオプションを変更します(Linuxではデフォルトのコンパイルオプションで問題ありません)。 「make」と入力してコンパイルし、「makeinstall」と入力してコンパイル済みバイナリをインストールします。

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実験版をインストールする必要があることを他の場所で読んだと思いますが、よくわかりません。

4
user8547

libbpgはPNGライブラリのバージョン1.6に依存しますが、Linux Mint17ではapt-getと一緒にインストールすることはできません。このライブラリはlibpng12と互換性がなく、 からインストールする必要があります。ソース (私はバージョンを使用しました 1.6.16

さらに複雑なのは、PNG 1.6をインストールすると、PNG1.6をlibpng12-devで構成した場合でも、makelibbpgconfigure --prefix=/usrを使用することです。また、libpng12-devlibsdl-image1.2-devはそれに依存しているため、libsdl1.2-devを単に削除することはできません。これらはlibbpgのコンパイルにも必要です。

おそらく、libsdl-imageおよびlibsdl1ソースをダウンロードしてコンパイルし、それらの-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

もちろん、PNG1.6をlibpng12-devと並行してインストールし、libbpgのソースを適合させる方が適切ですが、BPGライブラリを定期的に再コンパイルしないため、IMOのこの応急修理は許容できる。


¹ libpng16-dev を試してビルドすることもできますが、それをインストールすると、-devによってはlibpng12-devパッケージが削除される可能性があるため、試してみませんでした。

7
Anthon

ここでの他の答えは素晴らしいですが、私は完全に自動化されたインストールスクリプトを作成したかったのです。

#!/bin/bash

Sudo apt-get install -y cmake yasm libjpeg-dev libsdl-image1.2-dev libsdl1.2-dev

pushd /tmp
    wget -O libpng-1.6.21.tar.xz "https://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.21/libpng-1.6.21.tar.gz?ts=$(date +%s)"
    tar xf libpng-1.6.21.tar.xz
    pushd libpng-1.6.21
        ./configure
        make -j
        Sudo make install
    popd
    git clone "https://github.com/mirrorer/libbpg"
    pushd libbpg
        patch <<EOF
--- Makefile    2016-02-03 11:43:37.883142427 -0500
+++ Makefile    2016-02-03 11:44:20.867143492 -0500
@@ -41,6 +41,7 @@
 CFLAGS:=-Os -Wall -MMD -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -fomit-frame-pointer
 CFLAGS+=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT
 CFLAGS+=-I.
+CFLAGS+=-I/usr/local/include
 CFLAGS+=-DCONFIG_BPG_VERSION=\"\$(Shell cat VERSION)\"
 ifdef USE_JCTVC_HIGH_BIT_DEPTH
 CFLAGS+=-DRExt__HIGH_BIT_DEPTH_SUPPORT
@@ -59,6 +60,7 @@
 else
 LDFLAGS+=-Wl,--gc-sections
 endif
+LDFLAGS+=-L /usr/local/lib
 CFLAGS+=-g
 CXXFLAGS=\$(CFLAGS)
EOF
        make -j
        Sudo make install
    popd
popd
Sudo ldconfig  # Required for bpgenc to find libpng16.
4
Collin

公式にインストールされたパッケージlibpng12-devを変更するのではなく、libbpgのMakefileでlibpng1.6の場所を指定することをお勧めします。

だから私はAnthonのソリューションを変更します:

# install dev packages needed 
Sudo apt-get install -y libsdl-image1.2-dev libsdl1.2-dev libjpeg8-dev

# download, configure, make and make install PNG 1.6 (You coul find a newer version like 1.16.18 for me)
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
make -j
Sudo make install
#### The installation will take place in /usr/local by default and it's ok !
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

#### edit Makefile and insert the two following directive :
# "CFLAGS+=-I/usr/local/include" after the line CFLAGS+=-I.
# "LDFLAGS+=-L /usr/local/lib" before the line CFLAGS+=-g

make -j
Sudo make install
popd

それはすべての人々です!

4
Roo