2010-11-08 33 views
12

Tôi có RHEL 5.2, với Boost 1.33 được cài đặt. Tôi đã tải xuống boost_1_44_0.tar.bz2. và xây dựng nó. Sau khi hoàn thành nó cho thấy:Làm thế nào để thêm trình biên dịch bao gồm đường dẫn và đường dẫn thư viện liên kết cho Boost mới được cài đặt?

The Boost C++ Libraries were successfully built! 

The following directory should be added to compiler include paths: 

    /home/dfe/Archive/boost_1_44_0 

The following directory should be added to linker library paths: 

    /home/dfe/Archive/boost_1_44_0/stage/lib 
  1. Làm thế nào để thêm nêu trên bao gồm đường dẫn?
  2. Khi tôi làm "rpm -q boost", nó hiển thị tăng-1.33.1-10.el5. Tại sao vậy, khi tôi đã cài đặt phiên bản 1.44?
  3. Có cách nào tốt hơn để cài đặt phiên bản mới nhất của Boost không?

Trả lời

10

Trước tiên, tôi loại bỏ các tăng rpm hiện sử dụng

rpm -e boost-1.33.1-10.el5 

Thông báo được hiển thị cho biết "lỗi:" tăng "chỉ định nhiều gói"

Sau đó thử:

rpm -e --allmatches boost 

(tôi không nhớ cho dù tôi gõ 'thúc đẩy' hoặc 'tăng-1.33.1-10.el5')

Các gói với phụ thuộc được hiển thị. tôi đã làm:

rpm -e [packagename1] 
rpm -e [packagename2] 

và vân vân và sau đó đã làm:

rpm -e --allmatches 

này bị xóa thúc đẩy hoàn toàn khỏi hệ thống của tôi.

Sau đó, tôi được chiết xuất boost_1_44_0.tar.bz2 sử dụng tar -xvjf boost_1_44_0.tar.bz2 và chạy bootstrap với:

./bootstrap.sh 

Sau đó chạy bjam như:

./bjam install 

Vậy là xong! Boost đã được cài đặt trên hệ thống của tôi và tôi không phải chỉ định bất kỳ tùy chọn trình liên kết nào trong khi biên dịch chương trình! Yay! Bây giờ lệnh 'rpm -q boost' cho biết rằng không có gói nào được cài đặt.

+3

Điều quan trọng ở đây là ./bjam install, vì hướng dẫn làm cho nó có vẻ như ./b2 là lệnh để sử dụng để cài đặt. –

+0

Khi sử dụng './B2' so với'./Bjam': http://www.boost.org/build/doc/html/bbv2/faq/names.html – digawp

8

Bạn phải bao gồm các thư mục này vào makefile mà bạn sẽ sử dụng để xây dựng ứng dụng của bạn

CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp 

-Tôi tùy chọn Thêm thư mục vào danh sách các thư mục được tìm kiếm cho các tập tin #include.

-L tùy chọn thêm dir vào danh sách các thư mục tìm kiếm cho các thư viện bằng mối liên kết

CC được biên dịch nắng ...

+1

Yay! Nó làm việc! Cảm ơn! Mặc dù mục đích của tôi là để có phiên bản cũ của Boost hoàn toàn thay thế bằng Ngay bây giờ, các tập tin trong/usr/include/boost/dường như đã được cập nhật, nhưng nó gây phiền nhiễu để giữ liên kết đến/home/dfe/Archive/boost_1_44_0 trong mỗi chương trình mà tôi sử dụng. Tôi có thể làm gì để tạo 1_44_0 phiên bản mặc định? – Nav

7

Chỉ cần thêm các đường dẫn đến .bashrc hoặc .profile của bạn (hoặc bất cứ điều gì nổi thuyền của bạn) như thế này:

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib" 
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0" 
+0

Không chắc tại sao điều này lại bị bỏ qua ... ai đó có thể giải thích những gì sai với câu trả lời này? – isomorphismes

9

một lý do có thể là bạn chỉ là "làm cho" không "make install". vì vậy bạn nên chạy "sudo ./b2 install" not "./ B2"

có luôn có các bước cài đặt phần mềm trong hệ thống linux 1.configure 'kiểm tra' 2.Make 'xây dựng phần mềm trong thư mục hiện tại' 3.make cài đặt "sao chép tập tin vào hệ thống để phần mềm khác có thể sử dụng phần mềm này"

vấn đề là bạn đã thực hiện hai bước và một bước cuối cùng đã không được thực hiện

+0

Điều này hữu ích đối với Debian8 của tôi. – amirteymuri

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