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

    MySQL: installazione in directory non-standard, path e librerie condivise

    Scusatemi se non riuscirò a porre la domanda nel modo più consono, ma sono alle prime armi

    Dunque, ho scaricato i sorgenti di mysql 4, compilati, installati, e fin qua tutto bene.
    Invece di installarlo nella classica di
    codice:
    /usr/local/mysql
    ho deciso di installarlo, per ragioni di organizzazione mie, in
    codice:
    /home/server/mysql
    che risiede su un'altra partizione (/home, appunto).

    Il server funziona, si avvia il demone (lo lancio da inittab).

    Il problema sorge con le librerie condivise.
    Ho un software che mi richiede l'uso di libmysqlclient.so.14 che è appunto una libreria che fa parte del pacchetto mysql.
    Nella compilazione ho incluso questa lib, che si trova in
    codice:
    /home/server/mysql/lib/mysql/libmysqlclient.so.14.0.0
    Già il nome del file è diverso da quello che cerca il programma. Ho provato a rinominarlo per far combaciare i nomi, ma nulla.

    Come faccio a dire al sistema "aò, questa qui è una libreria condivisa e tu la devi caricare e rendere disponibile alle applicazioni"?

    Altra domanda, sempre correlata.
    Io in fase di compilazione di questo programma ho dovuto mettere le mani nel codice proprio perchè il sistema non sapeva dov'era installato mysql: quindi ho dovuto cambiare una riga così
    codice:
    include (mysql/mysql.h)
    in
    codice:
    include (/home/server/mysql/mysql.h)
    e altre amenità del genere.

    Magari mi sono perso un passaggio.... perchè l'altra volta, quando mysql stava in /usr/local, non avevo questi problemi (trovava al volo path e librerie condivise).
    Dipende da $PATH (ne ho solo sentito parlare: dove si modifica?), o da che altro?

    Scusate la richiesta chilometrica... non potendo scegliere, ho preferito essere chiaro piuttosto che conciso

    Grazie a tutti (e buone feste)

  2. #2
    da root, edita il file ld.so.conf (usualmente in /etc) e aggiungi la directory in cui si trova la libreria condivisa.
    Poi dai il comando
    >ldconfig -v
    per registrare le nuove librerie.

  3. #3
    Grazie, funziona

    Invece per quanto riguarda il path?
    codice:
    include (mysql/mysql.h)
    Come faccio a far riconoscere la directory di mysql automaticamente senza dirgli il percorso ogni volta?

    Dov'è $PATH?

  4. #4
    Il $PATH non c'entra.
    Quello che vuoi fare invece e' fare in modo che il compilatore trovi la posizione degli headers e la posizione delle librerie statiche. Se, come immagino, usi gcc e/o derivati (g++,g77,gfortran ecc) devi fare

    > gcc -I/path/to/include -L/path/to/lib programma.c ...


    ove i puntini denotano le librerie che devi utilizzare.
    Riporta tutti i sorgenti allo stato iniziale. Nel tuo caso dovresti
    avere

    >gcc -I/home/server -L/home/server/mysql/lib programma.c -lmysqlclient


    La regola comuque è semplice. Se unisci la stringa nell'opzione di ricerca I (ovvero /home/server) con quella nei file headers
    (ovvero mysql/mysql.h) devi ottenere il path assoluto del file
    (quindi /home/server/mysql/mysql.h).

    Se non usi gcc, studiati la documentazione. Comunque la lettera I per le directory di inclusioni e L per le librerie è diventato praticamente universale (per esempio su Windows e con Visual Studio, da linea di comando dovresti dare
    >cl /IC:\path\to\include /LC:\path\to\lib programma.c
    non molto diverso, vero?)

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.