2014-12-04 24 views
5

Sto usando gperftools v2.3rc e vorrei usare la funzionalità migliorata di creazione profili. Le note di rilascio riportano in parte:Cosa significa suffisso "f" su un nome di libreria C++ e come posso caricarlo?

ora è implementata la nuova modalità di profilazione della cpu su Linux. Imposta timer di creazione profili separati per thread separati. ... [It] è abilitato se è caricato sia librt.f e che è impostata la variabile di ambiente CPUPROFILE_PER_THREAD_TIMERS. ... applicazione

mio C++ è collegato con librt.so (-lrt - biblioteca POSIX.1b tempo reale Extensions), ma non ho sentito parlare di una biblioteca con un suffisso .F prima. Cosa significa .f, dove posso trovare questa libreria e come posso caricarla nella mia applicazione?

risposta

5

Sospetto che l'artrite temporanea causata dalla mancanza di caffè (è un errore di battitura). Ciò che si intende è librt.so. Dalla metà del src/profile-handler.cc:

// We use weak alias to timer_create to avoid runtime dependency on 
// -lrt and in turn -lpthread. 
// 
// At runtime we detect if timer_create is available and if so we 
// can enable linux-sigev-thread mode of profiling 

e più in basso nel codice:

#if HAVE_LINUX_SIGEV_THREAD_ID 
    if (getenv("CPUPROFILE_PER_THREAD_TIMERS")) { 
    if (timer_create && pthread_once) { // <-- note this bit here. 
     timer_sharing_ = TIMERS_SEPARATE; 
     CreateThreadTimerKey(&thread_timer_key); 
     per_thread_timer_enabled_ = true; 
    } else { 
     RAW_LOG(INFO, 
       "Not enabling linux-per-thread-timers mode due to lack of timer_create." 
       " Preload or link to librt.so for this to work"); 
    } 
    } 
#endif 

Si verifica se l'envvar è impostato e librt è stato caricato. Si tratta di librt.so.

+0

Ho sospettato tanto, grazie per aver confermato. – WilliamKF