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実験版をインストールする必要があることを他の場所で読んだと思いますが、よくわかりません。
libbpg
はPNGライブラリのバージョン1.6に依存しますが、Linux Mint17ではapt-get
と一緒にインストールすることはできません。このライブラリはlibpng12
と互換性がなく、 からインストールする必要があります。ソース (私はバージョンを使用しました 1.6.16 )
さらに複雑なのは、PNG 1.6をインストールすると、PNG1.6をlibpng12-dev
で構成した場合でも、make
のlibbpg
はconfigure --prefix=/usr
を使用することです。また、libpng12-dev
とlibsdl-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
パッケージが削除される可能性があるため、試してみませんでした。
ここでの他の答えは素晴らしいですが、私は完全に自動化されたインストールスクリプトを作成したかったのです。
#!/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.
公式にインストールされたパッケージ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
それはすべての人々です!