PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : monitor 1.8.1 kompiliert nicht unter Apple PowerBook G4 ppc platform



lixus
12.09.2007, 11:50
[0]jom@dapperdrake:~/tmp/monitor-1.8.1/# make
gcc -Wstrict-prototypes -I/usr/X11R6/include -O3 -march=i486 -DARCH_I386 -c -o bin-ppc/pocsag.o pocsag.c
cc1: error: invalid option 'arch=i486'
make: *** [bin-ppc/pocsag.o] Error 1

Ok, da scheint 'arch=i486' da problem zu sein, also mal von hand
versucht die -march -DARCH_I386 switche wegzulassen:

[0]jom@dapperdrake:~/tmp/monitor-1.8.1/# gcc -Wstrict-prototypes -I/usr/X11R6/include -O3 -c -o bin-ppc/hdlc.o hdlc.c
hdlc.c: In function 'ax25_disp_packet':
hdlc.c:330: warning: pointer targets in passing argument 2 of '__builtin_strncat' differ in signedness

Wie man sieht gibts ein problem mit signedness, soweit ich weiss
ist powerpc lowendian und i386 bigendian, oder genau umgekehrt, jedenfalls verschieden.

Ich bin gerne bereit daran mitzuarbeiten, das monitor plattform unabhängig compiliert.

Buebchen
12.09.2007, 22:56
[0]jom@dapperdrake:~/tmp/monitor-1.8.1/# make
gcc -Wstrict-prototypes -I/usr/X11R6/include -O3 -march=i486 -DARCH_I386 -c -o bin-ppc/pocsag.o pocsag.c
cc1: error: invalid option 'arch=i486'
make: *** [bin-ppc/pocsag.o] Error 1

Ok, da scheint 'arch=i486' da problem zu sein, also mal von hand
versucht die -march -DARCH_I386 switche wegzulassen:

[0]jom@dapperdrake:~/tmp/monitor-1.8.1/# gcc -Wstrict-prototypes -I/usr/X11R6/include -O3 -c -o bin-ppc/hdlc.o hdlc.c
hdlc.c: In function 'ax25_disp_packet':
hdlc.c:330: warning: pointer targets in passing argument 2 of '__builtin_strncat' differ in signedness

Wie man sieht gibts ein problem mit signedness, soweit ich weiss
ist powerpc lowendian und i386 bigendian, oder genau umgekehrt, jedenfalls verschieden.

Ich bin gerne bereit daran mitzuarbeiten, das monitor plattform unabhängig compiliert.

* Versuch' mal ein -DARCH=ppc

* Ausserdem wäre es natürlich interessant zu wissen, ob die die aktuelle SVN Version des monitor-2.1 kompilieren könntest.

* Ich denke das hat nicht viel mit big-/little endian zu tun. Liegt daran, daß in der hdlc.c Zeile 90 die Variable i als "unsigned char" definiert ist. Das ist ein Warning, daß du vorläufig m.E. ignorieren kannst, da i definitiv <128 ist.

Kompiliert es denn dann weiter oder bricht er mit dem warning ab ?

lixus
13.09.2007, 00:07
* Versuch' mal ein -DARCH=ppc


Danke für die schneele hilfe.
Ja, das sieht gut aus mit -DARCH_PPC -mcpu=G4, jedenfalls compiliert es
und erzeugt ein "monitor" binary, bei dessen start allerding nix passiert, siehe unten. Beim start von ./Xmonitor passiert auch nix, ich hätte ein GUI erwartet.



* Ausserdem wäre es natürlich interessant zu wissen, ob die die aktuelle SVN Version des monitor-2.1 kompilieren könntest.


Super, 2.1 funktioniert, erzeugt aber ein "monitord" binary bei dessen start
genau wie bei der 1.8.1 version nichts passiert. Ich habe ein log des compilierens und ausführens angehängt.




* Ich denke das hat nicht viel mit big-/little endian zu tun.


Okay, dem stimme ich zu.



Kompiliert es denn dann weiter oder bricht er mit dem warning ab ?


Diese frage erübrigt sich, da ich ja jetzt compilieren kann mit den passenden CFLAGS


[0]jom@dapperdrake:~/tmp/monitor-1.8.1/bin-ppc/# ./monitor
-> nix passiert, daher:

[0]jom@dapperdrake:~/tmp/monitor-1.8.1/bin-ppc/# strace ./monitor
execve("./monitor", ["./monitor"], [/* 42 vars */]) = 0
brk(0) = 0x1003b000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4801d000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4801e000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=74252, ...}) = 0
mmap(NULL, 74252, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4802f000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0 \0\335"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=687020, ...}) = 0
mmap(0xff38000, 751404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xff38000
mprotect(0xffdc000, 61440, PROT_NONE) = 0
mmap(0xffeb000, 20480, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa3000) = 0xffeb000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libncurses.so.5", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0 \1;\240"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=317068, ...}) = 0
mmap(0xfec9000, 386996, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfec9000
mprotect(0xff0e000, 65536, PROT_NONE) = 0
mmap(0xff1e000, 36864, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x45000) = 0xff1e000
mmap(0xff27000, 1972, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xff27000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0 \1\352"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1356256, ...}) = 0
mmap(0xfd5c000, 1427236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfd5c000
mprotect(0xfea1000, 65536, PROT_NONE) = 0
mmap(0xfeb1000, 20480, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x145000) = 0xfeb1000
mmap(0xfeb6000, 10020, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfeb6000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0 \0\r"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=13884, ...}) = 0
mmap(0xfd38000, 78336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfd38000
mprotect(0xfd3b000, 61440, PROT_NONE) = 0
mmap(0xfd4a000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0xfd4a000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4801f000
mprotect(0xfd4a000, 4096, PROT_READ) = 0
mprotect(0xfeb1000, 8192, PROT_READ) = 0
mprotect(0xffeb000, 4096, PROT_READ) = 0
munmap(0x4802f000, 74252) = 0

lixus
13.09.2007, 00:09
Logfile angefügt.

Buebchen
13.09.2007, 00:45
Das logfile sieht auf den ersten Blick garnicht so schlecht aus. Der monitord bleibt tatsächlich solange stumm, wie keine ZVEI/FMS/POCSAG Telegramme empfangen werden.

Man sieht ja auch, daß er immer wieder Datenblöcke von Sounddevice abholt [ read(7,...)].

Versuche mal nach den start des monitord ein telnet auf den Port 9300. Müßte sich der monitord melden. Dann läuft zumindest mal der Task im Hintergrund weiter.

Dann wäre es gut,wenn Du mal ein FMS Telegramm einspielen könntest.

lixus
14.09.2007, 15:56
Buebchen, erst mal Danke für die Aufmerksamkeit!

Okay, da es ja eine 2.1er version gibt werde ich mich nicht weiter mit der 1.8.1er version beschäftigen. Die 2.1er compiliert ja durch und das monitord binary lässt sich starten.
Ich hatte alerdings irgendeine ausgabe erwarted, das monitord glücklich und ready ist oder sowas (wenigstens im syslog)

Ich sehe auch das ein paar tcp ports auf sind:

root@dapperdrake:~# lsof -i tcp -a -c monitord
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
monitord 18710 jom 3u IPv4 46579 TCP *:9333 (LISTEN)
monitord 18710 jom 4u IPv4 46580 TCP *:9300 (LISTEN)
monitord 18710 jom 6u IPv4 46581 TCP *:7778 (LISTEN)

Eine telnet auf 9300 bringt allerdings nix:

root@dapperdrake:~# telnet localhost 9300
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
help



Das logfile sieht auf den ersten Blick garnicht so schlecht aus. Der monitord bleibt tatsächlich solange stumm, wie keine ZVEI/FMS/POCSAG Telegramme empfangen werden.
...
Versuche mal nach den start des monitord ein telnet auf den Port 9300. Müßte sich der monitord melden. Dann läuft zumindest mal der Task im Hintergrund weiter.



Ok, verstehe. Ich habe nicht mal den scanner an der soundkarte angeschlossen,
da ich dachte monitor oder monitord würden einem beim auspegeln helfen etc, aber
das muss man dann wohl mit anderen tools machen. Ich bin Newbie, und habe noch
keine Ahnung von monitor(d).

Gibt es zu der 2.1er version bzw monitod irgendwo dokumentation etc ?
Was soll ich denn z.b. per telnet auf port 9300 sehen, lässt sich monitord irgendwie
configurieren, welche parameter akzeptiert monitord usw ? Ich finde nix.


Dann wäre es gut,wenn Du mal ein FMS Telegramm einspielen könntest.
Wenn ich nur wüsste wie das ginge ;-)

thx, lixus

Buebchen
14.09.2007, 18:41
root@dapperdrake:~# lsof -i tcp -a -c monitord
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
monitord 18710 jom 3u IPv4 46579 TCP *:9333 (LISTEN)
monitord 18710 jom 4u IPv4 46580 TCP *:9300 (LISTEN)
monitord 18710 jom 6u IPv4 46581 TCP *:7778 (LISTEN)

Eine telnet auf 9300 bringt allerdings nix:

root@dapperdrake:~# telnet localhost 9300
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
help



Das ist seltsam. Nur mal zur Sicherheit: Firewall an/aus ?



Ok, verstehe. Ich habe nicht mal den scanner an der soundkarte angeschlossen,
da ich dachte monitor oder monitord würden einem beim auspegeln helfen etc, aber
das muss man dann wohl mit anderen tools machen. Ich bin Newbie, und habe noch
keine Ahnung von monitor(d).

Gibt es zu der 2.1er version bzw monitod irgendwo dokumentation etc ?
Was soll ich denn z.b. per telnet auf port 9300 sehen, lässt sich monitord irgendwie
configurieren, welche parameter akzeptiert monitord usw ? Ich finde nix.


Wenn ich nur wüsste wie das ginge ;-)

thx, lixus

Die 2.1er Version ist noch in der Entwicklung. Deswegen auch noch kein Support für syslog o.ä.

Informationen findest Du im diesem Thread: http://www.funkmeldesystem.de/foren/showthread.php?t=30710

Auf dem Port 9300 müßte sich der Simulator für FMS32 melden. Auf Port 9333 der monitord selbst. Auf 7778 der Crusader-Modus.

Ggf. ein Problem, daß die Threads nicht sauber anlaufen. Guten Tipp hätte ich im Moment auch nicht. Muss mal drüber nachdenken.