Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: libnodave: Probleme mit make all unter Linux Xubuntu 16.04 64 Bit

  1. #1
    Registriert seit
    06.08.2015
    Beiträge
    7
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    möchte unter Xubuntu 16.04 64 Bit mit libnodave arbeiten. Hab mich an diesem Beitrag orientiert. Die folgenden Schritte sollten auf allen Linux-Systemen auf dem Terminal (bei mir bash-Shell) nachvollziehbar sein.
    Code:
    mkdir /tmp/test-libnodave
    cd /tmp/test-libnodave
    wget http://downloads.sourceforge.net/project/libnodave/libnodave/libnodave-0.8.5.tar.gz
    tar -xf libnodave-0.8.5.tar.gz
    cd libnodave-0.8.5
    make all >../make-probleme.txt 2>&1
    tail -n6 ../make-probleme.txt
    führt zu folgender Ausgabe:
    cc ibhsim5.o openSocket.o nodave.o -lpthread -o ibhsim5
    ld -shared nodave.o setport.o openSocket.o -o libnodave.so
    ld: nodave.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
    nodave.o: error adding symbols: Bad value
    Makefile:131: recipe for target 'libnodave.so' failed
    make: *** [libnodave.so] Error 1
    Die Datei make-probleme.txt ist angehängt und die letzten, aus meiner Sicht relevanten Zeilen, sind im vorigen Block ausgegeben.
    Hat jemand einen Tip für mich, wo die Ursache dieses Fehlers liegt und wie ich ihn beheben kann?
    Gruß jomatic
    Zitieren Zitieren Gelöst: libnodave: Probleme mit make all unter Linux Xubuntu 16.04 64 Bit  

  2. "Wenn er dir schon die Option -fPIC vorschlägt, dann würde ich es damit mal versuchen. Vielleicht ist das aktuell aus sicherheitstechnischen Gründen Vorschrift.

    Dazu im makefile zumindest die eine Zeile hinter libnodave.so ändern von:
    $(LD) -shared nodave.o
    auf
    $(LD) -shared -fPIC nodave.o

    Evtl. muss die nodave.o dann auch schon mit dieser Option erzeugt werden, dann würde ich die Option generell bei den CFLAGS im makefile hinzufügen."


  3. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.588
    Danke
    141
    Erhielt 1.652 Danke für 1.202 Beiträge

    Standard

    Wenn er dir schon die Option -fPIC vorschlägt, dann würde ich es damit mal versuchen. Vielleicht ist das aktuell aus sicherheitstechnischen Gründen Vorschrift.

    Dazu im makefile zumindest die eine Zeile hinter libnodave.so ändern von:
    $(LD) -shared nodave.o
    auf
    $(LD) -shared -fPIC nodave.o

    Evtl. muss die nodave.o dann auch schon mit dieser Option erzeugt werden, dann würde ich die Option generell bei den CFLAGS im makefile hinzufügen.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  4. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    jomatic (16.09.2016)

  5. #3
    jomatic ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.08.2015
    Beiträge
    7
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Evtl. muss die nodave.o dann auch schon mit dieser Option erzeugt werden, dann würde ich die Option generell bei den CFLAGS im makefile hinzufügen.
    Herzlichen Dank, Thomas, das ist die Lösung: In Z.16 im Makefile die Option -fPIC einfügen, die Zeile sieht dann so aus:
    Code:
    CFLAGS=-Wall -Winline -fPIC -DLINUX -DDAVE_LITTLE_ENDIAN
    Die von Dir vorgeschlagene Änderung am Ende des Makefiles ist demnach nicht mehr notwendig:
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Dazu im makefile zumindest die eine Zeile hinter libnodave.so ändern von:
    $(LD) -shared nodave.o
    auf
    $(LD) -shared -fPIC nodave.o
    Hier nochmal die vollständige Lösung für die Kommandozeile, den sed-Befehl kann man wahrscheinlich eleganter gestalten:
    Code:
    mkdir /tmp/test-libnodave
    cd /tmp/test-libnodave
    wget http://downloads.sourceforge.net/project/libnodave/libnodave/libnodave-0.8.5.tar.gz
    tar -xf libnodave-0.8.5.tar.gz
    cd libnodave-0.8.5
    sed -i '16s/Winline/Winline -fPIC/'  Makefile
    make all
    sudo make install
    Anschließend kann ein Testprogramm my_libnodave_test.c beispielsweise mit folgendem Befehl kompiliert werden:
    Code:
    gcc -Wall -DLINUX -DDAVE_LITTLE_ENDIAN my_libnodave_test.c -lnodave -o my_libnodave_test

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 03.10.2013, 19:41
  2. CP5611 mit ndiswrapper unter Linux?
    Von LowLevelMahn im Forum Feldbusse
    Antworten: 4
    Letzter Beitrag: 02.01.2009, 14:07
  3. Tintenstrahldrucker unter Linux
    Von PeterEF im Forum PC- und Netzwerktechnik
    Antworten: 5
    Letzter Beitrag: 17.11.2006, 17:51
  4. Problem mit Libnodave unter VB
    Von Buster im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 25.04.2006, 13:28
  5. FTP-Server unter Linux einrichten
    Von Lobo im Forum Stammtisch
    Antworten: 1
    Letzter Beitrag: 21.08.2005, 21:31

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •