LINUX.ORG.RU

hge compilation error


0

1

делаю так:

hg clone http://hg.icculus.org/icculus/hge-unix/
cd hge-unix/
cmake CMakeLists.txt
make
выхлоп:
[  1%] Building CXX object src/core/CMakeFiles/hge.dir/CxImage/ximapng.cpp.o
/home/open/hge-unix/src/core/CxImage/ximapng.cpp: In member function ‘bool CxImagePNG::Decode(CxFile*)’:
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:145:34: error: ‘png_info’ has no member named ‘trans_color’
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:147:34: error: ‘png_info’ has no member named ‘trans_color’
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:155:36: error: ‘png_info’ has no member named ‘trans_alpha’
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:169:52: error: ‘png_info’ has no member named ‘trans_color’
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:170:52: error: ‘png_info’ has no member named ‘trans_color’
/home/open/hge-unix/src/core/CxImage/ximapng.cpp:171:52: error: ‘png_info’ has no member named ‘trans_color’
make[2]: *** [src/core/CMakeFiles/hge.dir/CxImage/ximapng.cpp.o] Ошибка 1
make[1]: *** [src/core/CMakeFiles/hge.dir/all] Ошибка 2
make: *** [all] Ошибка 2

погрепал исходникики на предмет png_info и задефайнененого trans_*, png_info есть, этих полей нет. как сконпелять посаны?


В последнее время libpng часто менялся. Попробуйте другую версию либы.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

libpng идет в комплекте.

/hge-unix/src/texasm/libPNG$ ls
png.c      pngerror.c  pngget.c  pngmem.c    pngread.c  pngrtran.c  pngset.c    pngvcrd.c  pngwrite.c  pngwutil.c
pngconf.h  pnggccrd.c  png.h     pngpread.c  pngrio.c   pngrutil.c  pngtrans.c  pngwio.c   pngwtran.c
parrot ()
Ответ на: комментарий от andreyu

не идет.


extern "C" {
#ifdef _LINUX
 #undef _DLL
 #include <png.h>
#else
 #include "../png/png.h"
#endif
}
все ясно, но под офтопиком тоже не соберется "../png/png.h" в другом месте

parrot ()

Когда-нибудь я соберусь с силами и открою свой порт hge с расширениями. Мой порт собирается и работает на разных платформах без проблем. Но когда у меня дойдут до этого руки я не знаю.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

может прям сейчас?=) а какую версию libpng искать? lenny (oldstable) (libs):1.2.27-2+lenny5

(stable) (libs): 1.2.44-1+squeeze1

wheezy (testing) (libs): 1.2.46-3

как-то так. у меня тестинг. это возможно что в 1.2.x умудрились потерять пару полей?

parrot ()
Ответ на: комментарий от parrot

попробуй 1.4
с 1.5 тоже ругается, но по-другому
вероятнее всего оно хочет 1.4

megabaks ★★★★ ()
Ответ на: комментарий от parrot

> может прям сейчас?=)

Не готов еще.

Я не смотрел этот порт, так что не знаю, какая либа нужна. Судя по вашей вырезке из кода, проще портировать hge самому, чем возиться с этим мусором.

andreyu ★★★★★ ()
Ответ на: комментарий от parrot

> libpng идет в комплекте.

это сорцы, для утилиты pngopt, идет в комплекте.

Что касается libpng.... Debian squeezy. libpng из репозитория. Сделал такую вот вещь: find . -type f | xargs -n1 sed -i -e 's/trans_color/trans_values/g' find . -type f | xargs -n1 sed -i -e 's/trans_alpha/trans/g' проверял так, создал каталог build, перешел в него и запустил cmake .. -DBUILD_TUTORIALS=ON как видно из названия переменной компилятся сразу и примеры. Потому только перекинул файлы из hge-unix/tutorials/precompiled в каталог ge-unix/build/tutorials примеры с png файлами работают без проблем. Правда нет гарантии, что это все, чем различаются libpng12 и libpng14

Punk ()
Ответ на: комментарий от Punk

эх, теги не использовал... В общем там можно заметить два разных вызова find. На всякий случай дублирую:

find . -type f | xargs -n1 sed -i -e 's/trans_color/trans_values/g'
find . -type f | xargs -n1 sed -i -e 's/trans_alpha/trans/g'

Punk ()
Ответ на: комментарий от Punk

Не уверен, но кажется trans_color, trans_alpha это из libpng версии 1.5.х

Punk ()
Ответ на: комментарий от andreyu

>Мой порт собирается и работает на разных платформах без проблем
>Не готов еще.
нихрена не понял.png

parrot ()
Ответ на: комментарий от Punk

собралось. дай я тебя расцелую. ну и да. просто супер. цели install нету.

parrot ()
Ответ на: комментарий от parrot

> >Мой порт собирается и работает на разных платформах без проблем
> >Не готов еще.

> нихрена не понял.png


Я не готов выложить свою версию в публичный доступ.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

GPL ШВАБОДА ЛИЦЕНЗИЯ. ну ты понел;3 вобщем итог. спасибо http://code.google.com/p/hge-unix/ спасибо Punk за дельную замену.
поковырял win-исходники одной веселенькой игрушку http://www.garagecoder.com/?p=6
ОЛОЛОЛ ПОРТИРОВАЛ
заменил пару вызовов с другим кол-вом аргументов, заменил сраную int WINAPI WinMain
заменил на който хрен впендюренный MessageBoxA на ламповый exit.
все работает окромя шрифтов. походу не подцепились из-за неламповой(trans_alpha) libpng
наслаждаюсь чЮдной музыкой.
зависимости hge и fmodex.
объясните неосиляьору про LD_PRELOAD
пишу LD_PRELOAD=/home/user/crf/Src/lib/libhge.so:/home/user/crf/Src/lib/libfmodex64.so a.out hge подхватывает на fmodex крчит что нету файла.

parrot ()
Ответ на: комментарий от parrot

Поздравляю, вечер потрачен не зря ;)

> объясните неосиляьору про LD_PRELOAD

> пишу LD_PRELOAD=/home/user/crf/Src/lib/libhge.so:/home/user/crf/Src/lib/libfmodex64.so a.out hge подхватывает на fmodex крчит что нету файла.


Что говорит ldd a.out

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

да. логично. там какая-то чушь

LD_PRELOAD=/home/user/crf/Src/lib/libhge.so:/home/user/crf/Src/lib/libfmodex64.so ldd ./a.out 
	linux-vdso.so.1 =>  (0x00007fffdb3ff000)
	/home/user/crf/Src/lib/libhge.so (0x00007fd473ebc000)
	/home/user/crf/Src/lib/libfmodex64.so (0x00007fd473aea000)
	libfmodex64.so => not found
	libhge_helpers.so => not found
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd4738b4000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd47352f000)

видим что libhge.so заменен, а libfmodex64.so джва раза
LD_PRELOAD=/home/user/crf/Src/lib/libhge.so:/home/user/crf/Src/lib/libfmodex64.so:/home/user/crf/Src/lib/libhge_helpers.so ldd ./a.out 
	linux-vdso.so.1 =>  (0x00007fff45bff000)
	/home/user/crf/Src/lib/libhge.so (0x00007fee5dd01000)
	/home/user/crf/Src/lib/libfmodex64.so (0x00007fee5d92f000)
	/home/user/crf/Src/lib/libhge_helpers.so (0x00007fee5d70e000)
	libfmodex64.so => not found
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fee5d4d9000)

libfmodex64.so был симлинком во время конпеляции. когда эта хрень стала появляться, заменил симлинк на саму бибдиотеку. больше ничего не знаю. ну и да. запустить удалось когда я кинул все 3 библиотеки в /lib.

parrot ()

и да, господа. про libpng. в демьяне версия 1.2 даже на сиде. какие блджад 1.4 1.5? движок оригинальный 2008 последняя модификация. окей гордон портировал его недавно. и? он поменял libpng из-за новых фич и вкрутил их? тем более по коммитам - порту хрен знает сколько лет.

parrot ()

Я думаю, дело в слишком новом компиляторе

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от parrot

> все работает окромя шрифтов. походу не подцепились из-за неламповой(trans_alpha) libpng

в libpng-1.5.5 trans_alpha есть. Сорцы есть на официальной странице. Там же есть интересная заметка про изменения в png_struct и png_info в ветке 1.5.x. Еще в экспериментальной ветке дебиана есть 1.5.4 http://packages.debian.org/experimental/libpng-dev
http://packages.debian.org/experimental/libpng15-15

Punk ()
Ответ на: комментарий от Punk

здорово. про libpng мне ясней некуда. мне про TIME PARADOX не ясно

parrot ()
Ответ на: комментарий от andreyu
open@sentinels:~/crf/Src$ ls -la lib/
итого 3811
drwxr-xr-x 2 open open     208 Окт 25 01:20 .
drwx------ 6 open open     440 Окт 25 01:24 ..
-rwxr-xr-x 1 open open   61916 Окт 25 01:12 a.out
-rwxr-xr-x 1 open open 1628768 Окт 20 10:11 libfmodex64.so
-rwxr-xr-x 1 open open 1669824 Окт 20 10:13 libfmodexL.so
-rwxr-xr-x 1 open open  155261 Окт 25 00:46 libhge_helpers.so
-rwxr-xr-x 1 open open  375261 Окт 25 00:43 libhge.so
parrot ()
Ответ на: комментарий от andreyu

смысл? с ней все в порядке.

	linux-vdso.so.1 =>  (0x00007fff8e5ff000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9e38579000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9e3835d000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9e38052000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9e37dd0000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9e37a4c000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9e37835000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f9e38b70000)

parrot ()
Ответ на: комментарий от parrot

> здорово. про libpng мне ясней некуда.
я лишь подвел итог, что проблема с шрифтами не из-за libpng. В примерах еще бинарник hge_tut06 нормально подгружает шрифты.

> LD_PRELOAD
может лучше попробовать использовать LD_LIBRARY_PATH ?

Punk ()
Ответ на: комментарий от Punk

в chain reaction шрифт в виде файла png. и может лучше все же объяснить почему /home/user/crf/Src/lib/libfmodex64.so (0x00007fd473aea000) libfmodex64.so => not found загружен, не заменил другой lib, не используется?

parrot ()
Ответ на: комментарий от parrot

> в chain reaction шрифт в виде файла png
хз тогда, надо код смотреть. Или сделать как в примере подгрузив обычный шрифт

> libfmodex64.so => not found загружен, не заменил другой lib, не используется?
так а с LD_LIBRARY_PATH работает? просто LD_PRELOAD подгружает библиотеку до запуска приложения, а LD_LIBRARY_PATH указывает на путь где искать библиотеку. На счет почему не работает с LD_PRELOAD - так устроен линкер.

Punk ()
Ответ на: комментарий от Punk

> так а с LD_LIBRARY_PATH работает? ту же самую игрушку скачал, подправил. Так что проверил с LD_LIBRARY_PATH работает). На счет шрифтов посмотрим завтра что там не так.

Punk ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.