Как установить BPG (Лучше Портативная Графика) на Linux Mint 17?

После того как вывод входит в фактический буфер клиента NFS, он должен добраться до сервера - я боюсь, что Вы теряете данные в обычных потоковых буферах. Попытайтесь изменить свойства буферизации с setvbuf().

Вы, вероятно, также хотите включить coredumps для отказывающего приложения так, чтобы у Вас было что-то для отладки - см. https://stackoverflow.com/questions/2919378/how-to-enable-core-dump-in-my-linux-c-program и prctl(PR_SET_DUMPABLE, ...)

4
22.02.2015, 17:37
3 ответа

libbpg зависит от версии 1.6 библиотеки PNG, которую вы не можете установить с склонный - добираются на Linux Mint 17. Эта библиотека является несовместимой с libpng12 и должна быть установлена от источник (я использовал версию 1.6.16 )

, дополнительная сложность - то, что, если вы устанавливаете PNG 1.6 эти , делают из , libbpg все еще использует libpng12-разработчик даже при конфигурировании PNG 1.6 с , настраивают - префикс =/usr . И вы не можете только деинсталлировать libpng12-разработчик как libsdl-image1.2-dev и , libsdl1.2-разработчик зависит от него, и это необходимо для компиляции libbpg также.

Вы могли, вероятно, также загрузить и скомпилировать libsdl-изображение и источники libsdl1 и не установить их - разработчик пакеты. Я не следовал за тем маршрутом, я просто временно удалил файлы (не пакет) от libpng12-разработчик и переустановил их после того, как я был сделан (необходимо смочь скопировать и вставить это на 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.6 параллельно на libpng12-разработчик и адаптировать источники libbpg, но так как вы не перекомпилировали библиотеку BPG регулярно, IMO, этот клудж приемлем.


¹ Вы могли также попытаться создать libpng16-разработчик , но установка, которая могла бы просто удалить - разработчик пакеты в зависимости от libpng12-разработчик , я не попробовал это.

7
27.01.2020, 20:46

Официально установленный пакет libpng12-dev лучше не менять, а указывать в Makefile из libbpg, где найти libpng 1.6.

Поэтому я изменяю решение Антона:

# 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
27.01.2020, 20:46

Другие ответы здесь прекрасны, но я хотел создать полностью автоматизированный сценарий установки.

#!/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
27.01.2020, 20:46

Теги

Похожие вопросы