undefinied reference
-
Hallo!
Ich möchte folgenden Code übersetzen:#include <fcntl.h> #include "linux/i2c.h" int main(int argc, char *argv[]) { int fd = open("/dev/i2c/2", O_RDWR); ioctl(fd, I2C_SLAVE_FORCE, 0x6a); i2c_smbus_write_byte_data(fd, 0x0c, 0x03); i2c_smbus_write_byte_data(fd, 0x0d, 0x21); i2c_smbus_write_word_data(fd, 0xc4, 0x9863); i2c_smbus_write_byte_data(fd, 0x0c, 0x02); i2c_smbus_write_byte_data(fd, 0x0d, 0x21); close(fd); }
Mit gcc -I/usr/src/linux/include -o fsset fsset.c
krieg ich/tmp/ccoxpoBm.o: In function
main': fsset.c:(.text+0x5a): undefined reference to
i2c_smbus_write_byte_data'
fsset.c:(.text+0x75): undefined reference toi2c\_smbus\_write\_byte\_data' fsset.c:(.text+0x90): undefined reference to
i2c_smbus_write_word_data'
fsset.c:(.text+0xab): undefined reference toi2c\_smbus\_write\_byte\_data' fsset.c:(.text+0xc6): undefined reference to
i2c_smbus_write_byte_data'
collect2: ld returned 1 exit statusWas mach ich da falsch?
-
du linkst die benötigte Library nicht.
-
Welche Library soll ich linken? Ich wüsste nicht, welche das sein sollte.
Der Code stammt von hier:
http://glotv.dax.nu/xbox/focus-setup.html
Ist nur etwas abgeändert in den Werten.
-
such einfach mal in deim ordner /usr/lib nach "i2c" oder "smbus" - wie die entsprechende library heißt kann ich dir leider auch net ohne weiteres sagen.
mfg blan
-
Dort gibt es nichts derartiges.
-
mase schrieb:
Dort gibt es nichts derartiges.
Musst Du also wohl nachinstallieren, frag mal Deinen Paketmanager danach.
-
Ich greif ja auf Kernelmodule zu. Und auf o. g. Seite, wo der Code her
stammt, steht nur, dass ich die i2c-Header linken soll.
Ich bin C++-Neuling, mit C hab ich noch nicht viel am Hut gehabt. Und mit
externem Linken hab ich kaum Erfahrung, jedenfalls was den Kernel betriff.
Leider bin ich bei Kernelsachen auf C angewiesen.