Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c] problema con libreria dinamica

    Devo consegnare un progetto tra poche ore... e ho questo simpatico problema:

    Con un makefile lancio questo (lì è tutto parametrizzato.. ma il risultato è questo... e lo provo anche direttamente da shell):

    gcc -I ../include pvm.c -o ../bin/mypvm -l lpvm -L ../lib

    dove lpvm (liblpvm.so) è una libreria dinamica che creo da lpvm.c...

    gcc mi restituisce errori dicendo che le funzioni che ho nella libreria non sono defnite.... in pratica gcc trova la libreria e pare linkarla a pvm.c, ma quest'ultimo non trova la libreria.... eppure nel suo sorgente c'è

    include "lpvm.h"

    Sapreste darmi qualche dritta? Devo consegnare tra un paio d'ore... vi prego... se potyete fare qualcosa fatelo


  2. #2
    aggiungo che il path di inclusione dovrebbe essere giusto... è lo stesso di altre compilazioni che ho nel makefile e quelle non danno problemi...

  3. #3
    potresti postare gli errori, cosi mi ci raccapezzo un po meglio, perché da quello che dici ci possono essere troppe possibili problematiche ^^

    cmq ... se ho capito bene ... il linker non linka, giusto?

    nota: fai una prova idota ... passa -llpvm come ultimo parametro

    nota2: posta l'errore che hai per intero
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    allora:

    codice:
    # Makefile 
    #
    CC = gcc
    CFLAGS = -c
    INCDIR = ../include
    INCPATH = -I $(INCDIR)
    OBJDIR=../obj
    BINDIR= ../bin
    LIBDIR=../lib
    PVMD_OBJ = ${OBJDIR}/task.o ${OBJDIR}/list.o
    LIB_OBJ = ${OBJDIR}/msgbuf.o ${OBJDIR}/list.o
    
    .....
    
    mypvm: lib
    	@ echo "building mypvm"
    	$(CC) -E ${INCPATH} pvm.c -o ${BINDIR}/mypvm -llpvm -L ${LIBDIR}
    	@ echo "done building mypvm"
    
    lib:  lpvm.o msgbuf.o list.o
    	@ echo "building library"
    	$(CC) ${INCPATH} -shared -o ${LIBDIR}/liblpvm.so $(LIB_OBJ)
    	@ echo "done building library"
    
    
    bla bla bla
    lancio make mypvm
    compila tutte le dipendenze e quando arriva al punto.....
    codice:
    gcc -E -I ../include pvm.c -o ../bin/mypvm -llpvm -L ../lib
    gcc: -llpvm: linker input file unused because linking not done
    done building mypvm
    Adesso da questo... prima dava undefined references to *funzioni che stanno nella lib*

    adesso non so manco io a forza di smanettare cosa ho cambiato

  5. #5
    ok.. il cambiamento è dovuto a -E che mi hanno fatto mettere aiutandomi in chat.. senza torna a dare...


    building mypvm
    gcc -I ../include pvm.c -o ../bin/mypvm -llpvm -L ../lib
    /tmp/cck5FRIL.o: In function `catch_int':
    pvm.c.text+0x33): undefined reference to `pvm_exit'
    /tmp/cck5FRIL.o: In function `send_cmd':
    pvm.c.text+0xb3): undefined reference to `pvm_tasks'
    pvm.c.text+0x219): undefined reference to `pvm_sendsig'
    /tmp/cck5FRIL.o: In function `main':
    pvm.c.text+0x83f): undefined reference to `pvm_mytid'
    pvm.c.text+0x8b7): undefined reference to `pvm_exit'
    collect2: ld returned 1 exit status
    make: *** [mypvm] Error 1

  6. #6
    grazie a tutti.. anche a quelli a cui ho linkato la discussione in qualche chat

    ho risolto grazie a San Daniele (che non è un prosciutto) Dll (se non se ne intende lui di librerie dinamche..... anche se erano quelle di un altro sistema operativo... )

    semplicemente come nun grandissimo fagiano scordavo di compilare altri file oggetto assieme alla libreria.. un poemriggio perso così

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.