Carica dinamicamente il codice utente da una libreria comune

2

Il mio progetto mira a fornire un'interfaccia comune tra più simulatori HDL diversi, in modo che gli utenti possano scrivere banchi di prova che funzioneranno indipendentemente dal simulatore utilizzato. In questa situazione, è il simulatore, non il codice dell'utente, che è l'applicazione di guida. All'avvio del simulatore, carica con esso una libreria che astrae l'utilizzo del simulatore per adattarlo a un'interfaccia comune. Una libreria è scritta che espone questa interfaccia per ogni simulatore supportato. Quindi un utente può scrivere un singolo testbench usando quell'interfaccia comune, e il testbench funzionerà con qualsiasi simulatore.

Quello che devo sapere è il modo migliore per caricare la libreria di un utente (che implementa il banco di prova) dalle comuni librerie di interfaccia del simulatore. Ci sono due modi che conosco:

  1. Richiede che la libreria dell'utente sia nominata in un modo noto. Possono modificare LD_LIBRARY_PATH in modo tale che la loro implementazione venga rilevata (e prima) quando dlopen() ed.
  2. Imposta il percorso completo della libreria utente disponibile in una variabile di ambiente conosciuta e dlopen() it.

Il primo è quello che mi è venuto subito in mente quando ho pensato al problema. Il secondo che ho visto lavorare prima, ma non mi piace perché può inquinare l'ambiente; modificare LD_LIBRARY_PATH è altrimenti innocuo. Ci sono altri modi in cui questo può essere fatto? Quali sono i loro pro e contro?

    
posta ktb 10.10.2018 - 04:29
fonte

0 risposte

Leggi altre domande sui tag