Gần đây tôi đã gọi điện để làm điều này, trong trường hợp đó là sử dụng cho bất cứ ai khác đó là những bước tôi đi theo:
- Tải về và cài đặt các LSB SDK
- Tải về một phiên bản của tăng và trích xuất/opt/boost/boost_ < phiên bản > (Tôi đã sử dụng 1.43)
- Đảm bảo cài đặt libbz2-dev.
- Bootstrap với
cd /opt/boost/boost_<version>
./bootstrap.sh --prefix=/opt/boost --without-libraries=python,mpi --without-icu
- Sửa
/opt/boost/boost_<version>/project-config.jam
và thêm dòng
using gcc : : /opt/lsb/bin/lsbc++ : <cflags>-U_GNU_SOURCE <cxxflags>-U_GNU_SOURCE ;
gần phía trên cùng của tập tin. Lưu ý rằng điều này sẽ thất bại nếu bạn có một khai báo bằng cách sử dụng một trong các tập tin khác bjam đọc cấu hình của nó từ, bạn có thể vượt qua --debug-configuration
để có được một ý tưởng về các tập tin mà nó đọc.
./bjam cflags=-fPIC cxxflags=-fPIC linkflags=-fPIC install
Tôi không cố gắng để có được một trong hai python hoặc thư viện MPI làm việc, tôi cũng không cố gắng để có được ICU làm việc với thư viện boost.regex. Sau này có lẽ là một trường hợp xây dựng các phiên bản tĩnh của các thư viện ICU với bộ công cụ LSB.
-fPIC
không thực sự cần thiết đối với Linux 32 bit, nhưng là bắt buộc nếu bạn muốn liên kết các thư viện tĩnh thành thư viện dùng chung cho Linux 64 bit.
Kết quả cuối cùng phải là nhị phân trong /opt/boost/lib
và tiêu đề trong /opt/boost/include
, rõ ràng là bạn có thể sửa đổi tiền tố cho phù hợp với tùy chọn của riêng bạn. Tôi vẫn còn một số lượng công việc phải làm trước khi tôi chuyển tất cả mã của mình sang LSB, vì vậy tôi không thể báo cáo về quá trình chứng nhận được thực hiện tốt như thế nào.
Nguồn
2010-07-23 11:00:02
Vì khi nào LSB là trình biên dịch? Tôi nghĩ rằng nó chỉ là một đặc điểm kỹ thuật của thư viện và các tiện ích cần được cài đặt và có sẵn trên một bản phân phối Linux (để các thư viện và tiện ích khác có thể phụ thuộc vào chúng đang ở đó). –
Michael Aaron Safyan: Dự án LSB cung cấp trình biên dịch C++ của riêng họ, có thể được sử dụng thay cho GCC, và phải tạo ra các tệp nhị phân tương thích với tất cả các bản phân phối Linux. Thật vậy, bằng cách sử dụng trình biên dịch này cho mã của riêng tôi cho kết quả tốt. Tuy nhiên, tôi có vấn đề với thư viện của bên thứ ba được sử dụng trong dự án của tôi. –
@Michael, LSB là một bộ thông số kỹ thuật, nhưng nhóm làm việc cũng cung cấp các công cụ giúp phát triển các chương trình phù hợp với các thông số kỹ thuật này. Xem tại đây http://ldn.linuxfoundation.org/lsb/porting-lsb-demo và tại đây http://www.linuxfoundation.org/collaborate/workgroups/linux-standard-base-lsb/lsb-sdk-403 –