2014-12-04 12 views
5

Tôi đang sử dụng gperftools v2.3rc và muốn sử dụng tính năng định hình tiểu sử được cải tiến. Ghi chú phát hành nêu một phần:Hậu tố 'f' có nghĩa là gì đối với tên thư viện C++ và làm cách nào để tải nó?

chế độ cấu hình cpu mới trên Linux hiện đã được triển khai. Nó thiết lập các bộ định thời cấu hình riêng biệt cho các luồng riêng biệt. ... [Nó] được bật nếu cả hai librt.f được tải và biến môi trường CPUPROFILE_PER_THREAD_TIMERS được đặt. ...

Ứng dụng C++ của tôi được liên kết với thư viện tiện ích mở rộng Librt.so (-lrt - POSIX.1b thời gian thực), nhưng tôi chưa từng nghe về thư viện có hậu tố .f trước đó. Ý nghĩa của .f là gì, tôi có thể tìm thư viện này ở đâu và làm cách nào để tải nó trong ứng dụng của mình?

Trả lời

5

Tôi nghi ngờ bị viêm khớp tạm thời do thiếu cà phê (đó là lỗi đánh máy). Điều gì có nghĩa là librt.so. Từ giữa 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 

và tiếp tục xuống trong các mã:

#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 

Nó kiểm tra nếu envvar được thiết lập và librt đã được tải. Đó là về librt.so.

+0

Tôi nghi ngờ nhiều, cảm ơn bạn đã xác nhận. – WilliamKF

Các vấn đề liên quan