Il faut modifier la source pour qu'elle fonctionne en tant que librairie statique. En l'occurrence, il faut modifier les noms réservés
i2clib@0000 en autre chose, par exemple
i2clib0000, ou alors directement le nom que la fonction est censée avoir en C, ça t'éviterait les bidouilles du genre
#define adress i2clib__0002.
D'ailleurs, ça:
#define start() asm("jsr i2clib__0000")
#define stop() asm("jsr i2clib__0001")
c'est une très mauvaise idée, il vaut mieux déclarer
start() et
stop() comme des fonctions sans arguments et retournant
void, c'est beaucoup plus propre. De plus, ton code actuel est incorrect parce que tu ne marques pas les registres détruits dans ton
asm inline; si tu déclares ça comme une fonction normale, GCC sait que %d0-%d2/%a0-%a1 peuvent être détruits.