PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler bei configure von sdlcam-packages:



nomad
02-01-2008, 12:59
Fehler bei configure von sdlcam-packages:

suse-linux 10.1. 64bit

hi,
versuche das sdlcam-package zum laufen zu
kriegen.
mit ./configure ergibt am schluss fogende
fehler-meldung:
<<
checking pkg-config is at least version 0.9.0... yes
checking for SDL... configure: error: Package requirements (sdl) were not met:

No package 'sdl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables SDL_CFLAGS
and SDL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
>>

hab bis jetzt nicht heraus gefunden, wie man
a) den PKG_CONFIG_PATH setzt?
b) die enviroment-varaible SDL_CFLAGS und SDL_LIBS setzt
um den aufruf von pkg_config zu vermeiden

ich kann meine SDL-progs sehr wohl compilieren.
mit:
cc sdltest.c -o sdltest `sdl-config --cflags --libs`

ich muss zugeben, dass ich zu wenig erfahrung mit configure und PKG_CONFIG
habe, da ich meine progs ohne diesen stuff compiliere, auch opengl-progs

ich waere sehr froh, wenn mir jemand helfen koennte.
gruss
nomad

jeebee
02-01-2008, 13:38
Annahme: deine Shell ist die bash (sonst halt nach einem Tutorial für deine shell suchen)

Die Umgebungsvariablen SDL_CFLAGS und SDL_LIBS kannst du in einem Terminal mit

export SDL_CFLAGS=`sdl-config --cflags`
export SDL_LIBS=`sdl-config --libs`
setzen.

Wenn ich die Fehlermeldung richtig interpretiere sollte dann alles funktionieren.

nomad
02-01-2008, 15:40
hi jeebee,
danke das klappt jetzt.

nun folgt das 2.problem bei make:

2) make
fehler bei erstellung filter denke ich:
ausschnitt von make: -> filter
<<
make[2]: Entering directory `/root/Desktop/sdlcam/sdlcam-0.8.2/filter'
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -DMM X -DTIMER -DPKGDATADIR=\"/usr/local/share/sdlcam\" -DLIBDIR=\"/usr/local/lib/fil ters\" -g -O2 -Wshadow -Wall -Wstrict-prototypes -MT Absdiff.lo -MD -MP -MF .de ps/Absdiff.Tpo -c -o Absdiff.lo Absdiff.c
mkdir .libs
gcc -DHAVE_CONFIG_H -I. -I.. -DMMX -DTIMER -DPKGDATADIR=\"/usr/local/share/sdlc am\" -DLIBDIR=\"/usr/local/lib/filters\" -g -O2 -Wshadow -Wall -Wstrict-prototyp es -MT Absdiff.lo -MD -MP -MF .deps/Absdiff.Tpo -c Absdiff.c -fPIC -DPIC -o .li bs/Absdiff.o
/tmp/cciRXvVF.s: Assembler messages:
/tmp/cciRXvVF.s:164: Error: suffix or operands invalid for `push'
/tmp/cciRXvVF.s:165: Error: suffix or operands invalid for `push'
/tmp/cciRXvVF.s:166: Error: suffix or operands invalid for `push'
/tmp/cciRXvVF.s:167: Error: suffix or operands invalid for `push'
/tmp/cciRXvVF.s:205: Error: suffix or operands invalid for `pop'
/tmp/cciRXvVF.s:206: Error: suffix or operands invalid for `pop'
/tmp/cciRXvVF.s:207: Error: suffix or operands invalid for `pop'
/tmp/cciRXvVF.s:208: Error: suffix or operands invalid for `pop'
make[2]: *** [Absdiff.lo] Error 1
make[2]: Leaving directory `/root/Desktop/sdlcam/sdlcam-0.8.2/filter'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/Desktop/sdlcam/sdlcam-0.8.2'
make: *** [all] Error 2
>>

ich nehme mal an das die filter fuer das erstellung
des eigentlichen sdl-viewers-programms nicht unbedingt notwendig sind.

gibt's eine moeglichkeit das make so abzuaendern, dass es nur der sdl-viewer
installiert und die filter aussen vorlaesst??

das Absdiff.c-file sieht so aus:


/*
SDLcam: A program to view and apply effects in real-time to video
Copyright (C) 2002, Raphael Assenat

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include "../SDL_v4l_image.h"
#include "../dyn_misc.h"
#include <stdlib.h>

int Apply (int mode, const SDL_v4l_image *A, const SDL_v4l_image *B, SDL_v4l_image *DST) {
unsigned char *a = A->data;
unsigned char *b = B->data;
unsigned char *dst;
unsigned int len = A->len;
if(mode==0) return 0;
if (A->len != B->len) return 0;
SDL_v4l_Buffer_Prepare (A, DST);
dst = DST->data;
#ifdef MMX
/* {{{ D = [A-B] OR [B-A] ; [] mean sturated to 0 */
if (len < 8) return 0; // image size must be at least 8 bytes
asm volatile (
"push %%ebx \n"
"push %%ecx \n"
"push %%esi \n"
"push %%edi \n"
"mov %3, %%ecx \n"
"mov %2, %%edi \n"
"mov %1, %%ebx \n"
"mov %0, %%esi \n"
"shr $5, %%ecx \n"
".align 16 \n"
".absdiff_MMX: \n"
"movq (%%esi), %%mm0\n"
"movq 8(%%esi), %%mm1\n"
"movq 16(%%esi), %%mm2\n"
"movq 24(%%esi), %%mm3\n"
"movq (%%ebx), %%mm4\n"
"movq 8(%%ebx), %%mm5\n"
"movq 16(%%ebx), %%mm6\n"
"movq 24(%%ebx), %%mm7\n"
"psubusb %%mm4 , %%mm0\n"
"psubusb %%mm5 , %%mm1\n"
"psubusb %%mm6 , %%mm2\n"
"psubusb %%mm7 , %%mm3\n"
"psubusb (%%esi), %%mm4 \n"
"psubusb 8(%%esi), %%mm5\n"
"psubusb 16(%%esi), %%mm6\n"
"psubusb 24(%%esi), %%mm7\n"
"por %%mm4 , %%mm0 \n"
"por %%mm5 , %%mm1\n"
"por %%mm6 , %%mm2\n"
"por %%mm7 , %%mm3\n"
"movq %%mm0, (%%edi)\n"
"movq %%mm1, 8(%%edi)\n"
"movq %%mm2, 16(%%edi)\n"
"movq %%mm3, 24(%%edi)\n"
"add $32, %%esi\n"
"add $32, %%edi\n"
"add $32, %%ebx\n"
"dec %%ecx\n"
"jnz .absdiff_MMX\n"
"emms \n"
"pop %%edi\n"
"pop %%esi\n"
"pop %%ecx\n"
"pop %%ebx\n"
: "=m" (b) // %0
:"m" (a), // %1
"m" (dst), // %2
"m" (len) // %3
);
/* }}} */
#else
while (len--)
{
if(*a>*b) *(dst++)=*(a++)-*(b++);
else *(dst++)=*(b++)-*(a++);
}
#endif
return 1;
}

static int status = 0;
int Type (void ) { return 2; } // MANDATORY
int Toggle (void ) { return status = (status + 1) % 2; } // RECOMENDED ( else always ON )
int Mode_set (int a) { return status = a % 2; } // RECOMENDED ( else unknown STATE )
int Mode_get (void ) { return status; } // RECOMENDED ( else unknown STATE )
const char *Name (void ) { return "absdiff"; } // MANDATORY
const char *Display (void ) { return "Abs-diff"; }

/*
* vim600: fdm=marker
*/



oder muss oder muss ich's aufgeben???

fuer jede hilfe waer ich dankbar
als attachment: das make-file
gruss
nomad

jeebee
02-01-2008, 17:33
kannst du mal die Datei /tmp/cciRXvVF.s organisieren? Dann könnte ich dir vielleicht mehr sagen. Es hängt sehrwahrscheinlich mit dem inline-assembly zusammen.

edit: filter abstellen: schau dir mal an was mit configure --help so alles angegeben wird.

nomad
03-01-2008, 08:51
hi jeebee,
vielen dank fuer deine bemuehungen.
a) >> kannst du mal die Datei /tmp/cciRXvVF.s organisieren?

leider nein, hab nochmals ein make durchgefuehrt, finde kein solches file.
vermutlich, wird das nach abbruch von make einfach geloescht. ????

b) wegen configure und filter, ich guck mal.

vielen dank
gruss
nomad

jeebee
03-01-2008, 10:22
Führ mal ein
gcc -DHAVE_CONFIG_H -I. -I.. -DMMX -DTIMER -DPKGDATADIR=\"/usr/local/share/sdlc am\" -DLIBDIR=\"/usr/local/lib/filters\" -g -O2 -Wshadow -Wall -Wstrict-prototyp es -MT Absdiff.lo -MD -MP -MF .deps/Absdiff.Tpo -S Absdiff.c -fPIC -DPIC -o ./Absdiff.s im Verzeichnis wo Absdiff.c ist aus und schick mir das File Absdiff.s

Sollte aufs gleiche rauskommen.

nomad
03-01-2008, 12:18
he jeebee

also: folgendes ergebnis:
>> gcc am: no such file or directory
>> gcc es: no such file or directory
>> cc1 error: unrecognized command line option "-Wstrict-prototyp"

also kein file vorhanden.

also: etwas neues:
unterdessen hab ich ein altes sdl-programm mit sdl_image herausgesucht,
innerhalb eines loops hab ich dann via einem kleinen script.
eine Axis-Netzwerk-Cam eingebunden die liefert *.jpg - pics, dann den
converter von ImageMagick <convert image1.jpg image.bmp> drueberlaufen
lassen.
und siehe da, ich hab einen kleinen primitiven viewer.
nachteil die frame-rate ist nicht so berauschent aber
- bildqualitaet viel besser als bei einer webcam, ss. xawtv, gnomemeeting.
- da das ganze ja aus einzelbildern besteht. kann ich jetzt quasi
jedes bild veraendern
- und ich kann auch die bilder sichern....

nochmals vielen dank fuer deine hilfe
gruss
nomad

jeebee
03-01-2008, 14:49
Führ mal ein
gcc -DHAVE_CONFIG_H -I. -I.. -DMMX -DTIMER -DPKGDATADIR=\"/usr/local/share/sdlc am\" -DLIBDIR=\"/usr/local/lib/filters\" -g -O2 -Wshadow -Wall -Wstrict-prototyp es -MT Absdiff.lo -MD -MP -MF .deps/Absdiff.Tpo -S Absdiff.c -fPIC -DPIC -o ./Absdiff.s im Verzeichnis wo Absdiff.c ist aus und schick mir das File Absdiff.s

Sollte aufs gleiche rauskommen.

Hmm ja, da sind mal wieder so überflüssige Leerzeichen drin, die die Forensoftware reinpappt... sollte korrekterweise so heissen:

gcc -DHAVE_CONFIG_H -I. -I.. -DMMX -DTIMER -DPKGDATADIR=\"/usr/local/share/sdlcam\" -DLIBDIR=\"/usr/local/lib/filters\" -g -O2 -Wshadow -Wall -Wstrict-prototypes -MT Absdiff.lo -MD -MP -MF .deps/Absdiff.Tpo -S Absdiff.c -fPIC -DPIC -o ./Absdiff.s

Vielleicht jetzt...

nomad
03-01-2008, 15:51
hi jeebee
hat geklappt..
anbei als attachment das file:Absdiff-s.txt

danke,
gruss nomad

jeebee
03-01-2008, 16:00
Versuchs mal mit Ersetzen der folgenden Zeilen im Inline-Assembly Code (der Assembly-Code wurde für 32bit geschrieben, du hast 64bit.):

"push %%ebx \n"
"push %%ecx \n"
"push %%esi \n"
"push %%edi \n"

mit

"pushq %%rbx \n"
"pushq %%rcx \n"
"pushq %%rsi \n"
"pushq %%rdi \n"

und

"pop %%edi\n"
"pop %%esi\n"
"pop %%ecx\n"
"pop %%ebx\n"

mit

"popq %%rdi\n"
"popq %%rsi\n"
"popq %%rcx\n"
"popq %%rbx\n"


Dies sollte die direkten Fehlermeldungen während dem make beheben.

nomad
04-01-2008, 08:51
he jeebee,

vielen dank,

also Absdiff.c funzzt jetzt,
dann kamm mit asm-inline-code die files:
-Bluebox.c
-Deep.c
drann, die hab ich nach deinem muster abgeaendert.
funzzen.
dann,
bei Generic_mmx_bbb.c
den code auch so abgeaendert.

code-fragmente:


#define MMX_pre_bbb "pushq %%rax \n"\
"pushq %%rbx \n"\
"pushq %%rcx \n"\
"pushq %%rsi \n"\
"pushq %%rdi \n"\
"mov %3, %%ecx \n"\
"mov %2, %%ebx \n"\
"mov %1, %%edi \n"\
"mov %0, %%esi \n"\
"shr $6, %%ecx \n"\
".align 16 \n"

#define MMX_edi8(CMD) "movq (%%esi), %%mm0\n"\
"movq 8(%%esi), %%mm1\n"\
"movq 16(%%esi), %%mm2\n"\
"movq 24(%%esi), %%mm3\n"\
"movq 32(%%esi), %%mm4\n"\
"movq 40(%%esi), %%mm5\n"\
"movq 48(%%esi), %%mm6\n"\
"movq 56(%%esi), %%mm7\n"\
CMD" (%%edi), %%mm0\n"\
CMD" 8(%%edi), %%mm1\n"\
CMD" 16(%%edi), %%mm2\n"\
CMD" 24(%%edi), %%mm3\n"\
CMD" 32(%%edi), %%mm4\n"\
CMD" 40(%%edi), %%mm5\n"\
CMD" 48(%%edi), %%mm6\n"\
CMD" 56(%%edi), %%mm7\n"\
"movq %%mm0, (%%ebx)\n"\
"movq %%mm1, 8(%%ebx)\n"\
"movq %%mm2, 16(%%ebx)\n"\
"movq %%mm3, 24(%%ebx)\n"\
"movq %%mm4, 32(%%ebx)\n"\
"movq %%mm5, 40(%%ebx)\n"\
"movq %%mm6, 48(%%ebx)\n"\
"movq %%mm7, 56(%%ebx)\n"\
"add $64, %%esi \n"\
"add $64, %%edi \n"\
"add $64, %%ebx \n"\
"dec %%ecx \n"

#define MMX_post_bbb "emms \n"\
"popq %%rdi \n"\
"popq %%rsi \n"\
"popq %%rcx \n"\
"popq %%rbx \n"\
"popq %%rax \n"


Fehler-meldungen :



/tmp/ccffdlYE.s: Assembler messages:
/tmp/ccffdlYE.s:220: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:221: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:222: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:251: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:252: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:253: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:307: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:308: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:309: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:338: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:339: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:340: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:394: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:395: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:396: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:425: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:426: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:427: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:481: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:482: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:483: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:512: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:513: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:514: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:568: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:569: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:570: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:599: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:600: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:601: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:655: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:656: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:657: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:686: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:687: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:688: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:742: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:743: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:744: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:773: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:774: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:775: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:829: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:830: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:831: Error: suffix or operands invalid for `push'
/tmp/ccffdlYE.s:860: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:861: Error: suffix or operands invalid for `pop'
/tmp/ccffdlYE.s:862: Error: suffix or operands invalid for `pop'
make[2]: *** [Generic_mmx_bbv.lo] Error 1
make[2]: Leaving directory `/root/Desktop/sdlcam/sdlcam-0.8.2/filter'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/Desktop/sdlcam/sdlcam-0.8.2'
make: *** [all] Error 2



da vermutlich der ganze folder von /filter/ aus files besteht, in dem asm-inline-code vorkommt,
glaube ich langsam dass wir uns davon verabschieden muessen den code
unter meinen 64-system zum laufen zu kriegen.

was denkst du????

gruss
nomad

jeebee
04-01-2008, 09:49
da ich gerade kein 64bit-System zur Hand habe, wo ich selbst ausprobieren kann, wird es wohl zu aufwändig. Also eher schauen ob man die Filter deaktivieren kann.

gruss
jeebee

nomad
05-01-2008, 08:03
hi jeebee,
vielen dank fuer deine hilfe
hab in den letzten tage verschiedene packages fuer webcams getestet.
es ist so, entweder keine filter, dann funzzt es (xawtv,gnomemeeting)
oder falls filter vorhanden, dann kann ichs vergessen.
ich hab jetzt mit 1 webcam == viewer, 1 netzwerkcamera==slideshow + filter.
improvisation, aber es geht.
gruss nomad
gruss
nomad

jeebee
05-01-2008, 18:55
Das Problem mit den Echtzeitfiltern ist halt, dass die effizient laufen sollten und man das falls möglich mit den MMX-Erweiterungen der CPU machen kann (mehrere Integerrechnungen (Addition, Subtraktion, Multiplikation, Division, Shift) gleichzeitig). Da dies aber vom gcc nicht immer optimal gemacht wird, werden solche Sachen häufig mit Inline-Assembly gemacht.

Da nun dieses Inline-Assembly für ein 32bit-System geschrieben wurde gibt es z.t. Inkompatibilitäten mit Registergrössen etc. was zu Assemblier-Fehlern führt ("wrong arguments").

Hoffe das war einigermassen verständlich.

Gruss
jeebee

nomad
06-01-2008, 08:21
hi jeebee,
danke, das ist verstaendlich.
nochmals vielen dank fuer die hilfe
gruss
nomad