LinuxForum.Fans
Тема

NVTV - Nvidia TV-Out utility

Автор: Wehrmacht_Rover 18 сообщений 6448 просмотров
#273713

Установил nvtv-0.4.7-i486-6sl.txz - А бинарников оказывается нет! Кто и зачем тогда собирал этот пакет? Где мне их взять, родить чтоли? :D
Очень хочу эту прогу, так как выход на телек так и не удалось настроить :'(

text
bash-4.1# whereis nvtv   
nvtv: /usr/include/nvtv
bash-4.1# ls /usr/include/nvtv
nvtv_simple.h

Сорсы не собираются :(
Последние строки вывода ./configure:

text
checking for pci_init in -lpci... no
checking for pci_init in -lpciutils... no
configure: error: pci library required
text
[ installed ] - libpciaccess-0.12.1-i486-1
[ installed ] - pciutils-3.1.7-i486-1
#273727

Если это оно, то посмотрите на дату последнего обновления - 2006 год. Оно требует чего-нибудь постарее, похоже. :)

#273765

"Wehrmacht_Rover" написал:
Установил  nvtv-0.4.7-i486-6sl.txz - А бинарников оказывается нет! Кто и зачем тогда собирал этот пакет?
Ответы в порядке очерёдности.
1) Бинарники есть, только в виде библиотеки: libnvtvsimple.so.0.2.0 и сопутствующих libnvtvsimple.la, nvtvsimple.pc и заголовочного (.h) файла к ним, это и в SlackBuild-е английским по фоновому написано (cd $PKGNAME-$VERSION/lib ... configure; make; make install).
2) Кто? Собирал (по крайней мере переделывал слакбилд для slacky.eu Loris Vincenzi, о чём прямо внутри слакбилда и написано).
3) Зачем? Кому-то нужна была библиотека для сборки/работы чего-либо, её и опакетили.
4) Для сборки явно необходим libpciutils в каком-то конкретном (статическом/динамическом) виде, которого в данный момент в системе нет, или есть, но не той версии, или он по каким-то причинам не обнаруживается. Это именно те проблемы, которые решаются при разработке, следовательно, писать разработчикам (за давностью последних изменений вряд ли что-то даст), править самому или заинтересовать кого-либо.
5) На офсайте есть бинарная версия. Если заработает, можно перепаковать из неё.
#273810

Кстати, у меня в 13.37 под виртуалкой все замечательно собралось... могу выложить пакет, если нужно. Брал все в репозитории Slacky.eu.

#273830

"yars" написал:
все
Всё в /lib или вообще всё, в том числе nvtv, nvtvd?
#273833
"bormant" написал:
Всё в /lib или вообще всё, в том числе nvtv, nvtvd?

Только пакет с библиотеками. Я думал, что этот кусок вывода configure в первом сообщении темы относится к нему... А nvtv и nvtvd не собирал. Сейчас попробую...
UPD: Попробовал. Вываливается куча ошибок:

Показать
text
gcc -I  -O2    ../src/nvtv.c   -o nvtv
gcc -I  -O2    ../src/nvtvd.c   -o nvtvd
../src/nvtv.c: В функции «usage»:
../src/nvtv.c:245:23: ошибка: expected «)» before «PACKAGE_VERSION»
../src/nvtv.c: В функции «main»:
../src/nvtv.c:786:5: ошибка: expected «}» before «else»
../src/nvtv.c: На верхнем уровне:
../src/nvtv.c:803:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:821:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:831:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:884:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:921:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:924:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:957:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:977:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1000:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1008:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1026:3: ошибка: expected identifier or «(» before «switch»
../src/nvtv.c:1052:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1092:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1104:3: ошибка: expected identifier or «(» before «if»
../src/nvtv.c:1112:3: ошибка: expected identifier or «(» before «return»
../src/nvtv.c:1113:1: ошибка: expected identifier or «(» before «}» token
../src/nvtvd.c: В функции «srv_listModes»:
../src/nvtvd.c:355:6: предупреждение: несовместимая неявная декларация внутренней функции «strlen» [по умолчанию включена]
../src/nvtvd.c: В функции «srv_findBySize»:
../src/nvtvd.c:373:6: предупреждение: несовместимая неявная декларация внутренней функции «strlen» [по умолчанию включена]
../src/nvtvd.c: В функции «srv_findByOverscan»:
../src/nvtvd.c:395:6: предупреждение: несовместимая неявная декларация внутренней функции «strlen» [по умолчанию включена]
make: *** [nvtv] Ошибка 1
make: *** Ожидание завершения заданий...
/tmp/ccufg8rD.o: In function `srv_openCard':
nvtvd.c:(.text+0x336): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x39d): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x3c7): undefined reference to `pipeWriteList'
nvtvd.c:(.text+0x3de): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_closeCard':
nvtvd.c:(.text+0x40f): undefined reference to `pipeReadArgs'
/tmp/ccufg8rD.o: In function `srv_setHeads':
nvtvd.c:(.text+0x48b): undefined reference to `pipeReadArgs'
/tmp/ccufg8rD.o: In function `srv_getHeads':
nvtvd.c:(.text+0x508): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x572): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x5c3): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_getHeadDev':
nvtvd.c:(.text+0x607): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x655): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x679): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_probeChips':
nvtvd.c:(.text+0x6aa): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x6c9): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x6ea): undefined reference to `pipeWriteList'
/tmp/ccufg8rD.o: In function `srv_setChip':
nvtvd.c:(.text+0x747): undefined reference to `pipeReadArgs'
/tmp/ccufg8rD.o: In function `srv_setSettings':
nvtvd.c:(.text+0x7e0): undefined reference to `pipeReadArgsOpt'
/tmp/ccufg8rD.o: In function `srv_getSettings':
nvtvd.c:(.text+0x821): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x846): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x86a): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_setMode':
nvtvd.c:(.text+0x8ba): undefined reference to `pipeReadArgsOpt'
/tmp/ccufg8rD.o: In function `srv_getMode':
nvtvd.c:(.text+0x901): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x929): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x950): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_setModeSettings':
nvtvd.c:(.text+0x9bc): undefined reference to `pipeReadArgsOpt'
/tmp/ccufg8rD.o: In function `srv_setTestImage':
nvtvd.c:(.text+0xa45): undefined reference to `pipeReadArgsOpt'
/tmp/ccufg8rD.o: In function `srv_getStatus':
nvtvd.c:(.text+0xaa9): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xabe): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xaf5): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_getConnection':
nvtvd.c:(.text+0xb26): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xb3b): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xb6c): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_listModes':
nvtvd.c:(.text+0xbaf): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xbc4): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xbfa): undefined reference to `pipeWriteArray'
nvtvd.c:(.text+0xc64): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_findBySize':
nvtvd.c:(.text+0xced): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xd02): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xd9a): undefined reference to `pipeWriteArgs'
nvtvd.c:(.text+0xdb1): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_findByOverscan':
nvtvd.c:(.text+0xe3c): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xe51): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xf22): undefined reference to `pipeWriteArgs'
nvtvd.c:(.text+0xf39): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_initSharedView':
nvtvd.c:(.text+0xf73): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0xf9f): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0xfd2): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_getTwinView':
nvtvd.c:(.text+0x1003): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x1032): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x1074): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_adjustViewport':
nvtvd.c:(.text+0x10d2): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x1108): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x114a): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_serviceViewportCursor':
nvtvd.c:(.text+0x11c8): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x120c): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x124e): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_version':
nvtvd.c:(.text+0x1277): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x128c): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x12b0): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `srv_init':
nvtvd.c:(.text+0x12e1): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x1313): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x1332): undefined reference to `pipeWriteList'
/tmp/ccufg8rD.o: In function `srv_kill':
nvtvd.c:(.text+0x134f): undefined reference to `pipeReadArgs'
/tmp/ccufg8rD.o: In function `srv_loop':
nvtvd.c:(.text+0x150c): undefined reference to `pipeReadCmd'
nvtvd.c:(.text+0x167b): undefined reference to `pipeReadArgs'
nvtvd.c:(.text+0x1699): undefined reference to `pipeWriteCmd'
nvtvd.c:(.text+0x16ae): undefined reference to `pipeWriteArgs'
/tmp/ccufg8rD.o: In function `main':
nvtvd.c:(.text+0x1875): undefined reference to `back_null_init'
nvtvd.c:(.text+0x1881): undefined reference to `back_root_avail'
nvtvd.c:(.text+0x188a): undefined reference to `back_root_init'
nvtvd.c:(.text+0x18a6): undefined reference to `back_nvdev_avail'
nvtvd.c:(.text+0x18af): undefined reference to `back_nvdev_init'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make: *** [nvtvd] Ошибка 1

#273848
bormant написал:

5) На офсайте есть бинарная версия. Если заработает, можно перепаковать из неё.

Не работает - Segmentation fault.

#273934
"Wehrmacht_Rover" написал:
Не работает - Segmentation fault.

Проверьте бинарники при помощи ldd. У меня все библиотеки нашлись под виртуальной Slackware 13.37, при попытке запуска nvtv сказала, что не нашла поддерживаемой карты.

"yars" написал:
Попробовал. Вываливается куча ошибок:

Поправочка: эти ошибки лезут, если не собрать библиотеки, когда они собраны - требует

text
checking for pci_init in -lpci... no
checking for pci_init in -lpciutils... no
configure: error: pci library required

Версия pciutils в 12.1 - 2.2.10. Пока что думаю, как ее собрать в /opt куда-нибудь, да так, чтобы не нарушить работу штатного пакета. Почему я именно из Slackware-12.1 взял pciutils? Потому, что в репозитории Slacky.eu лежит собранный пакет именно на эту версию Slackware, хотя это еще ничего не значит - тамошний пакет содержит только библиотеки.

#273935
yars написал:

Версия pciutils в 12.1 - 2.2.10. Пока что думаю, как ее собрать в /opt куда-нибудь, да так, чтобы не нарушить работу штатного пакета. Почему я именно из Slackware-12.1 взял pciutils? Потому, что в репозитории Slacky.eu лежит собранный пакет именно на эту версию Slackware, хотя это еще ничего не значит - тамошний пакет содержит только библиотеки.

Можно собрать nvtv со статическими библиотеками.

#275294

Пытаюсь понять, почему "оно" не находит функцию(?) pci_init. Я оптимизировал и собрал-таки версию pciutils 2.1.8 для Slackware 13.37, эта функция есть в access.o:

text
# ar -t libpci.a 
access.o
generic.o
dump.o
names.o
filter.o
proc.o
i386-ports.o
# ar -x libpci.a access.o
file access.o 
access.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped

Смотрел по F3 в mc... (а как это делается правильно?)
Готовый пакет вместе с патчами и сорцами прилагаю.

#275320
"yars" написал:

Пытаюсь понять, почему "оно" не находит функцию(?) pci_init.

А что тут пытаться-то? Берём и читаем (сначала документацию, потом вывод об ошибке, потом что именно вызвало ошибку, ага, в config.log):

Показать
text

$ tar xf nvtv-0.4.7.tar.gz
$ cd nvtv-0.4.7
$ ./configure
...
checking for pci_init in -lpci... no
checking for pci_init in -lpciutils... no
configure: error: pci library required

$ less config.log ... configure:5674: checking for pci_init in -lpci configure:5705: gcc -o conftest -g -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/local/include conftest.c -lpci -L/usr/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm -lm >&5 /usr/lib/libpci.a(names-parse.o): In function `id_parse_list': names-parse.c:(.text+0xce): undefined reference to `gzgets' names-parse.c:(.text+0x12a): undefined reference to `gzeof' /usr/lib/libpci.a(names-parse.o): In function `pci_load_name_list': names-parse.c:(.text+0x6a0): undefined reference to `gzopen' names-parse.c:(.text+0x6c4): undefined reference to `gzclose' names-parse.c:(.text+0x792): undefined reference to `gzopen' names-parse.c:(.text+0x7c3): undefined reference to `gzerror' names-parse.c:(.text+0x7d2): undefined reference to `gzclose' names-parse.c:(.text+0x7e9): undefined reference to `zError' names-parse.c:(.text+0x7f3): undefined reference to `gzclose' collect2: ld returned 1 exit status configure:5708: $? = 1 configure: failed program was: | #line 5681 "configure" | /* confdefs.h. */ | | #define PACKAGE_NAME "nvtv" | #define PACKAGE_TARNAME "nvtv-0.4.7" | #define PACKAGE_VERSION "0.4.7" | #define PACKAGE_STRING "nvtv 0.4.7" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "nvtv" | #define VERSION "0.4.7" | #define HAVE_X 1 | #define HAVE_GTK 1 | #define HAVE_GTK_VERSION 1 | #define USE_UNIX_BACKEND 1 | #define USE_CLIENT_BACKEND 1 | /* end confdefs.h. */ | | /* Override any gcc2 internal prototype to avoid an error. */ | #ifdef __cplusplus | extern "C" | #endif | /* We use char because int might match the return type of a gcc2 | builtin and then its argument prototype would still apply. */ | char pci_init (); | int | main () | { | pci_init (); | ; | return 0; | } configure:5726: result: no

По характеру ошибок понимаем, что при сборке не нашлись gzopen(), gzgets(), gzclose() , а вовсе не libpci.a. По LSB это zlib, библиотеку ея звать libz (можно глянуть в составе пакета: grep /lib/ /var/log/packages/zlib-*). Проверяем предположение, добавив библиотеку libz (ключ -lz):

text
$ cat <<EOF >conftest.c
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pci_init ();
int
main ()
{
pci_init ();
  ;
  return 0;
}
EOF

$ gcc -o conftest -g -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/local/include conftest.c -lpci -L/usr/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm -lz $

Бинго! Осталось найти по исходникам, где забыли -lz, и поправить.

#275321

Да уж, мне до вас еще учиться и учиться :)
Теперь найду, спасибо!

#275324

Там и искать особо нечего. Источником для создания configure является configure.ac, а при его отсутствии -- configure.in (наш случай). Смотрим внутрь, не видим проверки на наличие zlib и добавления ея в LIBS. Допишем:

text

--- a/configure.in        2004-03-09 13:26:21.000000000 +0300
+++ b/configure.in    2012-09-17 11:42:42.036011913 +0400
@@ -247,6 +247,9 @@
 AC_CHECK_LIB(m,sin,LIBS="$LIBS -lm",
   AC_MSG_ERROR(math library required))

+AC_CHECK_LIB(z,gzopen,LIBS="$LIBS -lz", + AC_MSG_ERROR(z library required)) + case ${host} in *-*-netbsd*) AC_CHECK_LIB(i386,i386_iopl,LIBS="$LIBS -li386",

и выполним autoconf.
Теперь сконфигурится и соберётся.

ps. Любите книгу -- источник знаний, читайте маны, они рулёз :-)

#275326
bormant написал:
ps. Любите книгу -- источник знаний, читайте маны, они рулёз :-)

Я и так люблю :) вот только не всегда есть у меня возможность ее купить, к сожалению. А от чтения с монитора глаза устают.

#275327

Хм. Во всей этой истории есть по крайней мере один положительный для меня момент - я научился двум вещам: делать патчи и разбирать Makefile'ы :)

#277978

Где взять рабочий NVTV? *WALL* :! *TIRED*

#277982

Wehrmacht_Rover,
не получается собрать или не работает собранный?
Попробовать собрать под вас (тогда укажите битность и версию дистрибутива)? Только работоспособность проверить не смогу, не на чем.

#278008

Да, не собирается.
Да, пожалуйста, попробуйте собрать
OS: Slackware 14.0 i486
CPU: Intel Celeron

Ошибка сборки указана в первом посте. NVTV - Nvidia TV-Out utility

Войдите или зарегистрируйтесь, чтобы ответить.