I am trying to find ways to reduce linking time for my program.
I have noticed that there are a lot of functions in my codebase, which have not been specified as static, hence they are treated as extern.
If I specify them as static, they will get internal linkage.
I can verify this by running the name-mangling command on the object file (nm in linux):
Functions specified as static have a local symbol (e.g. 't') instead of a global symbol ('T').
Q: will the Linking time be notably reduced if enough symbols (functions) are converted from global (extern) to local (static)?
Q: Should I expect similar results if the objects have been created using a 'Release' compilation instead of 'Debug' compilation?
Q: Does the linkage specifier (extern/static) have any effect in the size of the object files?
Note: this question is about linking speed and object file size. It is not about the implications of having functions implicitly declared as extern.