trying to make a library "multiple definition of '#var'

extern int a = 7;
extern int b = 6;
extern int c = 5;

Think about the scope for abuse here.
Another file could quite legitimately have

extern int a = 5;
extern int b = 6;
extern int c = 7;

Which is why you got the warning.

Which set of initialisers is the correct one?