• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Fehler beim kompilieren

Nachdem libnfc und die diversen tools dazu nun erfolgreich laufen bin ich auf das mifare classic universal toolkit (http://code.google.com/p/mfcuk/) gestoßen und wollte das jetzt auch mal testen. Ich nutze opensuse 12.1 und libnfc 1.6rc1 und leider gibt es Probleme beim kompilieren wie man sieht:

Code:
stefan@linux-5jh1:~/src/mfcuk-read-only> make
make  all-recursive
make[1]: Entering directory `/home/stefan/src/mfcuk-read-only'
Making all in src
make[2]: Entering directory `/home/stefan/src/mfcuk-read-only/src'
  CC     mfcuk_mifare.o
In file included from mfcuk_mifare.c:53:0:
mfcuk_mifare.h:104:5: error: unknown type name ‘byte_t’
mfcuk_mifare.h:117:1: error: unknown type name ‘byte_t’
mfcuk_mifare.h:120:21: error: unknown type name ‘byte_t’
mfcuk_mifare.h:121:22: error: unknown type name ‘byte_t’
mfcuk_mifare.h:122:21: error: unknown type name ‘byte_t’
mfcuk_mifare.h:123:23: error: unknown type name ‘byte_t’
mfcuk_mifare.h:124:26: error: unknown type name ‘byte_t’
mfcuk_mifare.h:125:28: error: unknown type name ‘byte_t’
mfcuk_mifare.h:126:20: error: unknown type name ‘byte_t’
mfcuk_mifare.h:127:37: error: unknown type name ‘byte_t’
mfcuk_mifare.h:128:39: error: unknown type name ‘byte_t’
mfcuk_mifare.h:129:31: error: unknown type name ‘byte_t’
mfcuk_mifare.h:130:22: error: unknown type name ‘byte_t’
mfcuk_mifare.h:131:26: error: unknown type name ‘byte_t’
mfcuk_mifare.h:132:28: error: unknown type name ‘byte_t’
mfcuk_mifare.h:133:21: error: unknown type name ‘byte_t’
mfcuk_mifare.h:134:25: error: unknown type name ‘byte_t’
mfcuk_mifare.h:135:27: error: unknown type name ‘byte_t’
mfcuk_mifare.h:136:51: error: unknown type name ‘byte_t’
mfcuk_mifare.h:142:55: error: unknown type name ‘byte_t’
mfcuk_mifare.h:143:1: error: unknown type name ‘byte_t’
mfcuk_mifare.c:56:1: error: unknown type name ‘byte_t’
mfcuk_mifare.c:71:21: error: unknown type name ‘byte_t’
mfcuk_mifare.c:86:22: error: unknown type name ‘byte_t’
mfcuk_mifare.c:101:21: error: unknown type name ‘byte_t’
mfcuk_mifare.c:124:23: error: unknown type name ‘byte_t’
mfcuk_mifare.c:147:26: error: unknown type name ‘byte_t’
mfcuk_mifare.c:170:28: error: unknown type name ‘byte_t’
mfcuk_mifare.c:193:20: error: unknown type name ‘byte_t’
mfcuk_mifare.c:208:37: error: unknown type name ‘byte_t’
mfcuk_mifare.c:231:39: error: unknown type name ‘byte_t’
mfcuk_mifare.c:254:31: error: unknown type name ‘byte_t’
mfcuk_mifare.c:277:22: error: unknown type name ‘byte_t’
mfcuk_mifare.c:283:26: error: unknown type name ‘byte_t’
mfcuk_mifare.c:289:28: error: unknown type name ‘byte_t’
mfcuk_mifare.c:295:21: error: unknown type name ‘byte_t’
mfcuk_mifare.c:301:25: error: unknown type name ‘byte_t’
mfcuk_mifare.c:307:27: error: unknown type name ‘byte_t’
mfcuk_mifare.c:314:51: error: unknown type name ‘byte_t’
mfcuk_mifare.c: In function ‘print_mifare_classic_tag_keys’:
mfcuk_mifare.c:463:5: error: unknown type name ‘byte_t’
mfcuk_mifare.c:497:9: warning: implicit declaration of function ‘get_trailer_block’ [-Wimplicit-function-declaration]
mfcuk_mifare.c:499:9: warning: implicit declaration of function ‘is_valid_block’ [-Wimplicit-function-declaration]
mfcuk_mifare.c:507:13: warning: implicit declaration of function ‘get_sector_for_block’ [-Wimplicit-function-declaration]
mfcuk_mifare.c: At top level:
mfcuk_mifare.c:524:55: error: unknown type name ‘byte_t’
mfcuk_mifare.c:541:1: error: unknown type name ‘byte_t’
make[2]: *** [mfcuk_mifare.o] Fehler 1
make[2]: Leaving directory `/home/stefan/src/mfcuk-read-only/src'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/home/stefan/src/mfcuk-read-only'
make: *** [all] Fehler 2
stefan@linux-5jh1:~/src/mfcuk-read-only>

Über google bin ich auf folgenden Beitrag gestoßen:
http://www.libnfc.org/community/topic/595/solved-fail-to-compile-mfcuk/

Ich kann aber nicht genau nachvollziehen was mit "If I myself include the definitions for byte_t and nfc_device_t i now get this error instead" gemeint ist. Ich verstehe zwar die englische Sprache frage mich aber was der user da gemacht hat.

Danke
 
Hallo,

Ich kann aber nicht genau nachvollziehen was mit "If I myself include the definitions for byte_t and nfc_device_t i now get this error instead" gemeint ist.
...er hat möglicherweise das gleiche versucht was ich unten schreibe. Allerdings sind seine nachfolgenden Fehlermeldungen [z.B. "mifare.h:56:18: error: ‘DEVICE_NAME_LENGTH’ undeclared here (not in a function)"] in der neusten Version von "mifare.h" nicht mehr möglich).

So wie ich dies sehe (ohne Gewähr):

compilation with current version of libnfc is broken
https://github.com/4ZM/mfterm/issues/16

dort:
4ZM schrieb:
It took me a while to get around to fixing this, but there is now a libnfc 1.6.0 compatible branch. Enjoy
...wo diese "libnfc 1.6.0 compatible branch" sich befindet hab ich nicht gesehen.

In älteren Versionen von libnfc (<= 1.5) gab es:

Datei "nfc-types.h" mit:
Code:
typedef uint8_t byte_t;
In der neusten Version (libnfc 1.6.0) gibt es diesen Typ (byte_t) nicht mehr.

mfcuk von hier: http://code.google.com/p/mfcuk/source/checkout hat aber noch immer den Typ "byte_t" ... und erwartet die Definition von libnfc (wo diese aber nicht mehr existiert).

Ich weiss nicht was die beste Lösung ist.

-1- Du könntest die Definition ("typedef uint8_t byte_t;") in einer (oder allen) header Dateien (*.h) von mfcuk einfügen, oder,

-2- in mfcuk alle "byte_t" durch "uint8_t" ersetzen, z.B. so:
Code:
sed -i 's/byte_t/uint8_t/g' ./mfcuk-read-only/src/*.s
sed -i 's/byte_t/uint8_t/g' ./mfcuk-read-only/src/*.h
(sollte eigentlich beides funktionieren)

Nachher neu kompilieren:
Code:
autoreconf -is
./configure
make
Wie gesagt: ohne Gewähr! (mach Backups)

Gruss,
Roland
 
danke für die ausführliche Antwort. Ich habe das auch im libnfc Forum gepostet woraufhin der Autor der Software den source code angepasst hat und die besagte Fehlermeldung nun verschwunden ist. Ich bin da natürlich sehr positiv überrascht worden hätte nicht gedacht das wegen einem user da Änderungen vorgenommen werden (andererseits habe ich ja auch die aktuellste libnfc Version instaliert was zwangsläufig dazu geführt hätte das in Zukunft auch andere betroffen gewesen wären).

siehe auch hier:
http://www.libnfc.org/community/topic/761/error-by-compiling-mifare-classic-universal-toolkit/


Naja da sich das ganze auf diese Art und Weise gelöst wurde makier ich mal den Thread als gelöst.
 
Oben