2012-05-23 27 views
7

Tôi muốn biết cách cài đặt TBB từ nguồn và làm cho nó hoạt động trên một hệ thống Linux. Tôi đã gặp một số vấn đề khi sử dụng nó, các sự cố không xuất hiện nếu tôi cài đặt TBB thông qua trình quản lý gói.Làm thế nào để cài đặt TBB từ nguồn trên Linux và làm cho nó hoạt động

Trong trang web TBB, có một số nguyên tắc về cách thực hiện việc này, như đặt biến LD_LIBRARY_PATH và CPATH hoặc tìm nguồn tệp tbbvars.sh. Ngay cả khi tôi làm điều đó, khi tôi cố gắng biên dịch một ví dụ g ++ nói rằng không tìm thấy tbb. Vì vậy, câu hỏi đặt ra là đây là cách dễ dàng để thiết lập mọi thứ (biên dịch mã nguồn, tôi nên đặt biến nào ...) để sử dụng TBB.

Cảm ơn.

LƯU Ý: Số phiên bản thư viện khi câu hỏi này được hỏi là 2 (nếu tôi nhớ chính xác). Cá nhân tôi đã thử nghiệm giải pháp lên đến phiên bản 4.1, nhưng tôi nghĩ rằng nó cũng nên làm việc cho phiên bản hiện tại 4.2 (update 3) vì phương pháp xây dựng vẫn giữ nguyên.

+2

cậu thử làm gì chưa? Có tài liệu nào cho TBB không? Và quan trọng nhất: ** là gì ** TBB? Bạn có thể cụ thể hơn không? – Gnosophilon

+3

@Gnosophilon Bạn có thể di chuyển chuột qua thẻ và tìm hiểu TBB là gì – inf

+0

./configure; chế tạo; sudo make install –

Trả lời

15

Tôi đã đi kèm với giải pháp. Tôi sẽ đăng nó ở đây để nó sẽ giúp những người khác với chủ đề này.

1) Tải về mã nguồn ổn định mới nhất và giải nén nó, tức là trong ~/tbbsrc

2) Bên trong, loại làm. Nó sẽ bắt đầu biên dịch thư viện tbb và các bộ cấp phát bộ nhớ.

3) Các tiêu đề là trong ~/tbbsrc/include

4) Bên trong ~/tbbsrc/xây dựng sẽ có hai thư mục mới, một cho phiên bản phát hành và một cho phiên bản debug. Những thư mục này được đặt tên như "architecture_ldVersion_g ++ Version_kernelVersion".

5) Tôi khuyên bạn nên đặt một số biến, ví dụ trong file .bashrc, như:

  1. TBB_INSTALL_DIR = $ HOME/tbbsrc
  2. TBB_INCLUDE = $ TBB_INSTALL_DIR/include
  3. TBB_LIBRARY_RELEASE = $ TBB_INSTALL_DIR/xây dựng/RELEASE_FOLDER
  4. TBB_LIBRARY_DEBUG = $ TBB_INSTALL_DIR/xây dựng/DEBUG_FOLDER

6) Chúng ta hãy thử một ví dụ đơn giản:

// main.cpp 
#include "tbb/task_scheduler_init.h" 

int main(int argc, char* argv[]) { 
    // tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic); 
    // implicit tbb::task_sheduler_init::automatic 
    tbb::task_scheduler_init init; 
    return 0; 
} 

7) Thực hiện việc lập, ví dụ, với các phiên bản phát hành:

g++ main.cpp -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb 

Với -Wl,-rpath,$TBB_LIBRARY_RELEASE chúng ta đang nói mối liên kết năng động, nơi để tìm libtbb.so

8) Và điều đó sẽ hoạt động tốt!

Trân trọng!

Cài đặt cho Apple clang 5.1: [nhờ rwols for the info]

Thay vì gõ make, gõ make compiler=clang hoặc make compiler=clang stdlib=libc++

+0

Vâng tùy chọn -rpath không được nhận diện bởi g ++ ... nó là một tùy chọn ld ... – Andry

+1

Vâng. Đó là lý do tại sao bạn phải truyền nó với '-Wl', vì vậy mối liên kết" nhận ra nó ". Điều này đã được thử nghiệm cả trong Ubuntu và Windows với 'g ++ 4.4' và' g ++ 4.7'. Tôi chưa thử nghiệm nó với các phiên bản mới hơn. –

+0

nhưng không phải là -W1 một tùy chọn chỉ cung cấp thông tin để cảnh báo? Tôi đã không viết tùy chọn đó vì vậy tôi tò mò ... :) – Andry

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