¿Hay alguna manera de ignorar las referencias indefinidas no utilizadas?

Supongamos que tengo dos archivos de origen:UndefErr.cpp:

#include <cstdio>

void UndefFunc();
void Func2(){UndefFunc();}

void Func1(){printf("Hi\n");}

Y elmain.cpp:

void Func1();

int main(){
    Func1();
    return 0;
}

Como ves en elUndefErr.cpp elFunc2() va a desencadenar un error, ya que utiliza el indefinidoUndefFunc(). Sin embargo, la función principal no se preocupa por elFunc2()! De acuerdo auna pregunta relevante Podría pasar una opción--unresolved-symbols = ignore-in-object-files al enlazador, pero quiero algo un poco diferente. Necesito un enlazador para saber si las funciones indefinidas se usaron en algún lugar, y solo entonces fallan.

La razón para hacer una pregunta tan extraña es que estoy tratando de usar unlwIP, y es difícil entender todas sus dependencias(Solo necesito TCP / IP), y no puedo encontrar tutoriales en internet. Así que pensé que podría compilar más(o todos) los archivos .c por separado y escriba algunas pruebas simples para ver qué hace. Pero este enfoque tropieza con "referencias indefinidas", la mayoría de ellas probablemente irrelevantes para el caso de uso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta