После того как вывод входит в фактический буфер клиента NFS, он должен добраться до сервера - я боюсь, что Вы теряете данные в обычных потоковых буферах. Попытайтесь изменить свойства буферизации с setvbuf()
.
Вы, вероятно, также хотите включить coredumps для отказывающего приложения так, чтобы у Вас было что-то для отладки - см. https://stackoverflow.com/questions/2919378/how-to-enable-core-dump-in-my-linux-c-program и prctl(PR_SET_DUMPABLE, ...)
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-разработчик
, я не попробовал это.
Официально установленный пакет 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
Вот и все, ребята!
Другие ответы здесь прекрасны, но я хотел создать полностью автоматизированный сценарий установки.
#!/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.