Bibliothek mit Weak symbols



  • Hallo Leute,
    ich schreibe mir grad eine Bibo mit weak-symbols das Header-file sieht wie folgt aus: foo.h :

    extern void foo(void);
    #pragma weak foo = pfoo
    extern void pfoo(void);
    

    dem entsprechend habe ich pfoo in foo.c implementiert

    #include <stdio.h>
    
    void pfoo(void)
    {
      printf("42\n");
    }
    

    Dann habe ich die statische Library gebaut mit:

    gcc -fPIC -Wall -g -c foo.c
    gcc -ggdb3 -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 foo.o -lc
    

    Nun wollte ich die Library in einem normalen C-Programm nutzen, hello.c:

    #include <stdio.h>
    #include "foo.h"
    
    int main(void)
    {
      foo();
      return 0;
    }
    

    und habe es mit

    gcc -o hello hello.c -lfoo
    

    kompiliert. Dabei erzeugte der gcc folgende Fehlerasugabe:

    **
    foo.h:2:13: Fehler: »foo« als Alias für undefiniertes Symbol »pfoo«
    **

    Ich habe danach noch verschiedene Sachen ausprobiert, bin aber nicht auf die Loesung gekommen. Habt ihr ne Idee was ich falsch mache ?


Anmelden zum Antworten