Search code examples
cgccldposition-independent-code

Use `ld -r` and get compilation errors if symbols are missing


I've recently begun using a new ELF loader. The loader requires you to link your applications with ld -r.

The problem is that GCC no longer warns me of undefined functions, and then the loader (obviously) fails to find them.

How do I link with ld -r, and get the undefined symbols method.

I am using ld -r for relocation purposes, so a different way to include relocations will also work for me.


Solution

  • In your makefile, define an intermediate target where you link with all the options but the -r one, to a file in the temporary directory (so you're sure not to use it).

    If this phase succeeds, then proceed to the real link with the -r option.