[Problem] Library hinzufügen

merov

Neuer User
Mitglied seit
3 Okt 2015
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo,


ich benötige die libjansson in meinem freetz Image und dem Toolchain.


Als erstes habe ich das Verzeichnis libjansson unter make/libs/ erstellt. Die folgenden Dateien habe ich hinzugefügt:

Config.in:
Code:
config FREETZ_LIB_libjansson
    bool "libjansson (libjansson.so)"
    default n
    help
        C JSON library

Makefile.in:
Code:
ifeq ($(strip $(FREETZ_LIB_libjansson)),y)
LIBS+=libjansson
endif

external.files:
Code:
[ "$EXTERNAL_FREETZ_LIB_libjansson" == "y" ] && EXTERNAL_FILES+=" $FREETZ_LIBRARY_DIR/libjansson.so.4.7.0"

external.in:
Code:
config EXTERNAL_FREETZ_LIB_libjansson
    depends on EXTERNAL_ENABLED && FREETZ_LIB_libjansson
    bool "libjansson"
    default n
    help
        externals the following file(s):
         /usr/lib/freetz/libjansson.so.4.7.0

libjansson.mk:
Code:
$(call PKG_INIT_LIB, 4.7.0)
$(PKG)_SOURCE:=jansson-2.7.tar.gz
$(PKG)_SOURCE_MD5:=3a106a465bbb77637550b422f5b262ef
$(PKG)_SITE:=http://www.digip.org/jansson/releases
 
$(PKG)_LIBNAME:=$(pkg).so.$($(PKG)_VERSION)
$(PKG)_BINARY:=$($(PKG)_DIR)/.libs/$($(PKG)_LIBNAME)
$(PKG)_STAGING_BINARY:=$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/$($(PKG)_LIBNAME)
$(PKG)_TARGET_BINARY:=$($(PKG)_TARGET_DIR)/$($(PKG)_LIBNAME)


$(PKG)_CONFIGURE_OPTIONS += --enable-shared
$(PKG)_CONFIGURE_OPTIONS += --enable-static


$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)


$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
    $(SUBMAKE) -C $(LIBJANSSON_DIR)


$($(PKG)_STAGING_BINARY): $($(PKG)_BINARY)
    $(SUBMAKE) \
        DESTDIR="$(TARGET_TOOLCHAIN_STAGING_DIR)" \
        -C $(LIBJANSSON_DIR) install


$($(PKG)_TARGET_BINARY): $($(PKG)_STAGING_BINARY)
    $(INSTALL_LIBRARY_STRIP)


$(pkg): $($(PKG)_STAGING_BINARY)


$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)


$(pkg)-clean:
    -$(SUBMAKE) -C $(LIBJANSSON_DIR) clean
    $(RM) -r \
        $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/libjansson* \
        $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/include/jansson* \
        $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/pkgconfig/jansson.pc


$(pkg)-uninstall:
    $(RM) $(LIBJANSSON_TARGET_DIR)/libjansson*.so*


$(PKG_FINISH)

In den Dateien make/libs/Config.in und make/libs/external.in habe ich die entsprechenden Einträge ebenfalls hinzugefügt. Bei einem nun folgenden "make menuconfig" erhalte ich die Fehlermeldung "make/libs/libjansson/libjansson.mk:19: *** Ziel-Muster enthält kein „%“. Schluss.". Aufgrund meiner knappen make Kenntnisse konnte ich auch nach einiger Recherche nicht verstehen wo das Problem liegt.

Vielen Dank für eure Hilfe.

Gruß
merov
 
Du hast vermutlich nicht die libjansson.mk gepostet, mit der Du selbst getestet hast, denn die Zeile 19 in dem Post oben ist eine Leerzeile (eventuell hast Du zu Formatierungszwecken ein paar Leerzeilen hinzugefügt, außerdem waren überall Tabs durch 4 Leerzeichen ersetzt). Jedenfalls konnte ich Deinen Fehler weder nachvollziehen noch nachstellen.

Anstatt Vermutungen anzustellen, was es denn sein könnte, habe ich es einfach angepasst, wie es sein soll und committed (auf der Box nicht getestet, bitte testen und berichten).

Edit: sodern Du das Ausprobieren den Entwicklern erleichtern möchtest, hänge in der Zukunft bitte das Ganze als Patch an und nicht als Inhalt einzelner Dateien.
 
Zuletzt bearbeitet:
Hi er13,

ich hatte noch eine Zeile zum Debuggen raus genommen. Gemeint ist Zeile 22. Deinen Commit teste ich gleich.
 
Vielen Dank! Die Sache mit dem Patch werde ich nächstes Mal berücksichtigen.

edit: Für was benötigt man denn eigentlich die "PKG_FIX_LIBTOOL_LA" Zeile?
 
Zuletzt bearbeitet:
Für was benötigt man denn eigentlich die "PKG_FIX_LIBTOOL_LA" Zeile?
Beim Cross-Kompilieren eines (autotools-basierten) Pakets werden als prefix, exec_prefix, usw. die zur Laufzeit geltenden Pfade angegeben (wenn man nichts unternimmt, enthalten die Dateien libXY.la, XY.pc daher diese zur Laufzeit geltenden Pfade). Installation des Pakets auf dem Build-Host erfolgt jedoch in ein Verzeichnis, welches von dem zur Laufzeit geltenden abweicht (TARGET_TOOLCHAIN_STAGING_DIR). Damit ein weiteres Paket gegen eine Library kompiliert/gelinkt werden kann (es geht hier ums "auf dem Build-Host"), müssen libXY.la & XY.pc die zur Compile-/Linkzeit geltenden Pfade enthalten. Das Macro PKG_FIX_LIBTOOL_LA kümmert sich darum die zur Laufzeit geltenden Pfade in die zur Compile-/Linkzeit geltenden umzuwandeln.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,839
Beiträge
2,219,264
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.