![]() |
|
|
|||||||
| Portal | Wiki | IRC-Chat | Registrieren | Benutzerliste | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
|
|
Themen-Optionen | Thema bewerten | Ansicht |
|
|
#1 | |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
sysinfo.h: undefined reference
Tach,
ich portiere gerade mal wieder. Diesmal eine Anwendung, die die sysinfo.h benötigt. libsysinfo als Abhängigkeit einzurichten ist kein Problem, aber wie sage ich CMake, wo es nach der sys/sysinfo.h suchen soll? libsysinfo hat die in /usr/local/include/ installiert, aber es findet sie nicht oder kann sie einfach nicht richtig benutzen: Zitat:
(Bei Bedarf geb' ich auch gern das Makefile raus.) |
|
|
|
|
|
|
#2 |
|
Parasprite
|
Er sagt nichts davon, dass er einen Header nicht einbinden kann. Aber keiner der eingebundenen Header enthält eine Funktion Namens sysinfo.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#4 |
|
Parasprite
|
Ja, wenn der include da ist schon.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#6 |
|
Parasprite
|
Kann ich dir nicht sagen. Man kann weder den Compileraufruf noch den Code von hier aus erkennen.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#7 |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
Die fragliche Funktion ist:
Code:
|
|
|
|
|
|
#8 |
|
Registered User
Registrierungsdatum: Apr 2004
Beiträge: 268
|
sysinfo.h ist da, wird gefunden und auch in deren Inhalt wird die Deklaration der Funktion sysinfo() gefunden. Das zeigt sich daran, dass es keine Fehler- oder Warnmeldung vom Übersetzer gab.
Das da oben ist eine Fehlermeldung vom Binder, dass er die Definition der Funktion nicht findet. Sprich, die notwendige Bibliothek wurde nicht als Argument beim Binden übergeben: -lsysinfo (evtl. noch -L/usr/local/lib, damit der Binder in dem Verzeichnis nach der Bibliothek sucht). Header enthalten nur die Deklarationen von Funktionen (modulo inline-Funktionen). Sie sagen so etwas wie: Es gibt eine Funktion mit Namen $NAME, sie hat Parameter mit diesen und jenen Typen und liefert ein Resultat von jenem Typ. Die Implementierung einer Funktion befindet sich in einer Bibliotheksdatei (üblicherweise lib$NAME.a oder lib$NAME.so). |
|
|
|
|
|
#9 |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
Ah, ich war davon ausgegangen, dass die CMAKE-Scripte intelligent genug sind, vorhandene Bibliotheken automatisch zu erkennen. Ich sollte weniger mit Windows arbeiten.
Danke, werde ich nachher mal testen! |
|
|
|
|
|
#10 | |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
Scheint zu funktionieren - teilweise:
Zitat:
![]() |
|
|
|
|
|
|
#11 |
|
Parasprite
|
Ja, so funktioniert das. Die korrekten CFLAGS für ihre Abhängigkeiten können sich build-Skripte in der Regel von pkgconf holen:
Für den Compiler: # pkgconf --cflags glew -I/usr/include/GL Für den Linker: # pkgconf --libs glew -lGLEW Edit: Der Include Pfad oben ist übrigens falsch. Das wäre dann ein bug im graphics/glew port.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#12 |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
Dazu dann zwei weitere Fragen:
1. Muss ich die Abhängigkeiten für die sysinfo.h auch in "meinem" oder in "deren" Makefile hinzufügen? 2. Wie finde ich heraus, welche Bilbiothek gern die kvm_-Funktionen hätte? |
|
|
|
|
|
#13 |
|
Possessed With Psi Powers
|
libkvm, Teil des Basissystems: "-lkvm"
__________________
Eure Tastatur verfügt nicht umsonst über zwei Shift-Tasten! Benutzt sie bitte, denn sonst ist es mir fast unmöglich euere Posts zu entziffern. Homepage: http://www.yamagi.org | Yamagi Quake II: http://www.yamagi.org/quake2
|
|
|
|
|
|
#14 |
|
Der blutrote König
Registrierungsdatum: Mar 2012
Beiträge: 246
|
Das war jetzt eine sehr spezielle Antwort (danke!). Ich meinte: Wie ermittle ich, welche Funktion in welcher Bibliothek steckt? |
|
|
|
|
|
#15 |
|
Possessed With Psi Powers
|
Dafür gibt es keine generelle Antwort:
- Wenn die Bibliothek gut dokumentiert ist, über die Manpage. Hier z.B. "man kvm_getswapinfo". Leider sind viele Bibliotheken es nicht. - Google nach dem Symbol fragen. Oft findet man damit schnell, welche Bibliothek es beinhaltet. - Gefummel mit "strings | grep" auf das Verzeichnis mit den Blibliotheken.
__________________
Eure Tastatur verfügt nicht umsonst über zwei Shift-Tasten! Benutzt sie bitte, denn sonst ist es mir fast unmöglich euere Posts zu entziffern. Homepage: http://www.yamagi.org | Yamagi Quake II: http://www.yamagi.org/quake2
|
|
|
|
![]() |
| Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste) | |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| QT4.6.1 und KDE 4.3.5 kompiliert nicht "-fvisibility=hidden" error. | grisu | FreeBSD - Anwendungen und Ports | 3 | 25.08.2010 07:44 |
| VLC-Installation gescheitert | goofy864 | FreeBSD - Anwendungen und Ports | 5 | 02.04.2009 08:39 |
| Kernel build error: Undefined reference to critical system | Sonic_Traveler | FreeBSD - Allgemein | 0 | 26.12.2004 12:52 |
| kernel kompilieren: undefined references | Herakles | FreeBSD - Installation | 9 | 21.05.2004 14:30 |
| BSD 5.2 steigt bei eigenem Kernel aus | cat1510 | FreeBSD - Allgemein | 16 | 30.01.2004 22:15 |