Tôi đang cố gắng xây dựng gcc 4.7.2 bằng cách sử dụng tiền tố tùy chỉnh $PREFIX
Làm thế nào tôi có thể thiết lập rpath trên gcc nhị phân trong bootstrap?
Tôi đã xây dựng và cài đặt tất cả các điều kiện tiên quyết vào vị trí tiền tố của mình, sau đó cấu hình thành công, xây dựng và cài đặt gcc.
Sự cố hiện tại của tôi là $PREFIX
không có trong đường dẫn tìm kiếm thư viện và do đó không thể tìm thấy thư viện được chia sẻ.
$PREFIX/bin $ ./g++ ~/main.cpp
$PREFIX/libexec/gcc/x86_64-suse-linux/4.7.2/cc1plus: \
error while loading shared libraries: \
libcloog-isl.so.1: \
cannot open shared object file: No such file or directory
gì hoạt động, nhưng không phải là lý tưởng
Nếu tôi export LD_LIBRARY_PATH=$PREFIX/lib
sau đó nó hoạt động, nhưng tôi đang tìm kiếm cái gì đó làm việc mà không cần phải thiết lập các biến môi trường.
Nếu tôi sử dụng patchelf
để đặt RPATH
trên tất cả gcc
nhị phân thì nó cũng hoạt động; tuy nhiên điều này liên quan đến việc tìm kiếm tất cả các tập tin nhị phân của elf và lặp lại chúng gọi là patchelf
, tôi muốn có một cái gì đó vĩnh viễn hơn.
Những gì tôi nghĩ rằng sẽ là lý tưởng cho các mục đích của tôi
Vì vậy, tôi hy vọng có một cách để có -Wl,-rpath,$PREFIX/lib
thông qua để thực hiện trong quá trình xây dựng.
Vì tôi biết đường dẫn sẽ không cần phải thay đổi, điều này có vẻ giống như giải pháp mạnh mẽ nhất và cũng có thể được sử dụng khi chúng tôi tạo phiên bản gcc tiếp theo.
Đang định cấu hình quy trình xây dựng thành mã cứng có thể RPATH
?
Những gì tôi đã cố gắng, nhưng không hoạt động
Thiết LDFLAGS_FOR_TARGET
trước khi gọi configure
:
Tất cả những thất bại:
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -R$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib"
export LDFLAGS_FOR_TARGET="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
Thiết LDFLAGS
trước khi gọi configure
:
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
Trong mọi trường hợp, tôi lo lắng rằng những điều này sẽ ghi đè bất kỳ số nào trong số LDFLAGS
gcc sẽ, vì vậy tôi không chắc chắn đây có phải là lựa chọn khả thi ngay cả khi chúng có thể được thực hiện để hoạt động không?
dòng cấu hình của tôi
Đối với đầy đủ ở đây là dòng tôi vượt qua để cấu hình:
./configure \
--prefix=$PREFIX \
--build=x86_64-suse-linux \
--with-pkgversion='SIG build 12/10/2012' \
--disable-multilib \
--enable-cloog-backend=isl \
--with-mpc=$PREFIX \
--with-mpfr=$PREFIX \
--with-gmp=$PREFIX \
--with-cloog=$PREFIX \
--with-ppl=$PREFIX \
--with-gxx-include-dir=$PREFIX/include/c++/4.7.2
Nó sẽ không được 'LDFLAGS_ FOR_TARGET': có thể được sử dụng cho libgcc.so và libstdC++, nhưng không phải cho các tệp nhị phân của trình biên dịch vì chúng là * host * nhị phân. Tôi đã dự kiến 'LDFLAGS' là một trong những quyền. – ams