Autor Thema: Library und Programme  (Gelesen 17064 mal)

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #20 am: 21. February 2013, 19:09 »
Hat denn keiner eine Idee woran es liegen könnte :?
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 23. February 2013, 11:25 »
Wenn du eine statisch Bibliothek namens libfoo.a dazulinken willst, dann kannst du entweder libfoo.a ohne irgendeine Option davor angeben oder -lfoo. Wenn die Bibliothek einen bestimmten Pfad braucht, kannst du den mit -L in den Suchpfad aufnehmen und -l durchsucht den dann für jede Bibliothek. Wenn du sagst -llibfoo.a dann durchsucht der Linker den Suchpfad nach einer Bibliothek namens liblibfoo.a.a, was vermutlich nicht das ist, was du wolltest.

Mit --verbose hätte er dir das wahrscheinlich auch alles selber gesagt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #22 am: 23. February 2013, 13:56 »
Danke für den Tipp, aber es funktioniert immer noch nicht.
Ich habe mal das --verbose rein getan und dort konnte ich herauslesen, dass er die Lib im Ordner /usr/lib sucht. Aber ich übergebe ihm doch einen anderen Lib-Ordner und sage ihm auch er solle keine Standard-Lib verwenden. Hier die Konsolenausgabe und die Flags:
make all
Building target: V0.1
Invoking: GCC C Linker
gcc -nostartfiles -nodefaultlibs -nostdlib -static -L/home/[USERNAME]/Dokumente/YourOS/User/Lib/ -T../../../../program.ld -z max-page-size=0x1000 --verbose -o "V0.1"  ./main.o   -lYourOSlibc
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5.1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../:/lib/:/usr/lib/:/usr/lib/x86_64-linux-gnu/
COLLECT_GCC_OPTIONS='-nostartfiles' '-nodefaultlibs' '-nostdlib' '-static' '-L/home/[USERNAME]/Dokumente/YourOS/User/Lib/' '-T../../../../program.ld' '-z' 'max-page-size=0x1000' '-v' '-o' 'V0.1' '-mtune=generic'
 /usr/lib/gcc/x86_64-linux-gnu/4.4.3/collect2 --build-id -m elf_x86_64 --hash-style=both -static -o V0.1 -z relro -z max-page-size=0x1000 -L/home/[USERNAME]/Dokumente/YourOS/User/Lib/ -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../.. -L/usr/lib/x86_64-linux-gnu ./main.o -lYourOSlibc -T../../../../program.ld
/usr/bin/ld: cannot find -lYourOSlibc
collect2: ld returned 1 exit status
make: *** [V0.1] Fehler 1
Danke.
« Letzte Änderung: 24. February 2013, 13:47 von OsDevNewbie »
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 23. February 2013, 18:25 »
Deine Bibliothek heißt libYourOSlibc.a?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #24 am: 24. February 2013, 13:46 »
Nö sie heisst "YourOSlibc.a"
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 24. February 2013, 14:39 »
Dann hast du das Problem gefunden.
Mit "-lblub" wird eine Datei mit dem Namen libblub.a gesucht.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #26 am: 26. February 2013, 17:49 »
Ah, danke jetzt funktioniert es  :lol:. Aber warum funktioniert denn mein Makefile nicht, wenn der Sourcecode der Lib in einem Unterordner liegt?
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

 

Einloggen