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 toi2c_smbus_write_byte_data'
    fsset.c:(.text+0x75): undefined reference to i2c\_smbus\_write\_byte\_data' fsset.c:(.text+0x90): undefined reference toi2c_smbus_write_word_data'
    fsset.c:(.text+0xab): undefined reference to i2c\_smbus\_write\_byte\_data' fsset.c:(.text+0xc6): undefined reference toi2c_smbus_write_byte_data'
    collect2: ld returned 1 exit status

    Was 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.


Anmelden zum Antworten