undefined reference when calling inline function
According to the manual, passing -std=gnu11 enables C99 instead of GNU inline semantics. This means inline, static inline and extern inline all behave differently. In particular, inline expects an external definition in a separate translation unit (which you can provide without duplicating the definition – see this answer).