2015-10-29 16 views
5

Tôi nên chuyển đường nào đến tùy chọn --prefix khi thực hiện biên dịch chéo: tôi có nên chỉ định đường dẫn trên máy xây dựng của tôi hoặc đường dẫn trên nền tảng đích không?định cấu hình tùy chọn "--prefix" để biên dịch chéo

Giả sử tôi tạo mã vào /home/me/arm/build/target_fs/usr, sau đó tôi sao chép các tệp vào nền tảng mục tiêu của mình nơi chúng sẽ được đặt tại /usr. Tôi có nên sử dụng --prefix=/home/me/arm/build/target_fs/usr hoặc chỉ --prefix=/usr và sau đó make install DESTDIR=/home/me/arm/build/target_fs?

Tôi nghĩ rằng --prefix không phải là đường dẫn để xây dựng mà là đường dẫn cho môi trường đang chạy (tức là đường dẫn trên nền tảng đích). Câu trả lời here khiến tôi nghĩ rằng tôi đúng. Nhưng có nhiều trang ở đó (ví dụ: Cross-compiling FFmpeg for Raspbian: --prefix=/my/path/were/i/keep/built/) trong đó mọi người sử dụng đường dẫn trên máy xây dựng cho --prefix. Vì vậy, tôi bối rối.

Trả lời

5

Có bạn là đúng, --prefix là con đường cho môi trường làm việc. Chỉ cần sử dụng --prefix =/usr. Bạn có thể kiểm tra đường dẫn thư mục nào cài đặt lệnh sẽ cài đặt nhị phân của bạn bằng cách cài đặt trong DESTDIR. Ví dụ: nếu bạn sử dụng --prefix =/usrhãy cài đặt DESTDIR =/home/me/arm/build/target_fs, thì các tệp nhị phân sẽ được cài đặt trong thư mục/home/me/arm/build/target_fs/usr. Và nếu bạn chỉ cần chạy hãy cài đặt, thì tệp nhị phân sẽ được cài đặt trong tiền tố của bạn, tức là trong "/ usr".

Khi bạn đang biên dịch chéo, tôi cho rằng bạn không sử dụng tiền tố nào, bởi vì dù sao bạn sẽ cài đặt trong DESTDIR và sau đó sao chép tệp nhị phân theo cách thủ công vào mục tiêu của bạn.

+0

Tôi nghe nói rằng tiền tố có thể được chương trình biên dịch sử dụng để tìm kiếm một số tệp (như cấu hình). Vì vậy, nếu tôi sử dụng '/ home/me/arm/build/target_fs/usr' cho tiền tố thì chương trình đã biên dịch có thể tìm kiếm các tệp trong'/home/me/arm/build/target_fs/usr', là một đường dẫn trên xây dựng máy, không phải trên nền tảng đích nơi chương trình chạy. Vì vậy, tôi nghĩ rằng tiền tố có thể quan trọng trong một số trường hợp. –

+1

Để cài đặt nó không quan trọng. Nhưng có, tại thời gian chạy nó quan trọng. nhị phân của bạn có thể tìm kiếm một số tệp cấu hình trong tiền tố tại thời gian chạy. Chỉ cần sử dụng đường dẫn chuẩn chẳng hạn --prefix =/usr – Sami

+0

Cảm ơn bạn, tôi đã hiểu. –

-2

Như bạn có thể tìm thấy:

--prefix = dirname Chỉ định thư mục cài đặt mục cấp đầu. Đây là cách được khuyến nghị để cài đặt các công cụ vào một thư mục khác với làm mặc định. Thư mục cài đặt toplevel mặc định là /usr/local.

Theo tôi hiểu, bạn đang cố biên dịch trình biên dịch cho một số mục tiêu.

Trong trường hợp này prefix sẽ chỉ định thư mục khi trình biên dịch sẽ được cài đặt sau make install lệnh trên máy ảnh xây dựng. Sau đó, bạn có thể lấy một trình biên dịch ở đó.

. Tôi có nên sử dụng --prefix =/home/me/arm/build/target_fs/usr hoặc chỉ --prefix =/usr và sau đó cài đặt DESTDIR =/home/me/arm/build/target_fs?

Trong trường hợp của bạn prefix lệnh không có ý nghĩa. Bởi vì bạn đang sao chép các tệp nhị phân bằng tay.

Ngoài ra bạn có thể tìm thấy tất cả các thông tin khác trên trang web chính thức GCC: https://gcc.gnu.org/install/finalinstall.html

+0

Không, tôi không biên dịch trình biên dịch, tôi vượt qua biên dịch các gói thông thường (như ffmpeg) sẽ được chạy trên CPU ARM. "Bản sao" trong trường hợp của tôi không chỉ là 'cp', nó là một kịch bản mà làm cho hình ảnh hệ thống tập tin để ghi vào bảng mục tiêu. –

+0

Sau đó, có vẻ như bạn phải sử dụng 'DESTDIR' https://www.gnu.org/prep/standards/html_node/DESTDIR.Tiền tố html – Arseniy

+1

chắc chắn có thể có tác động lớn, thường được sử dụng cho đường dẫn mã cứng trong chính tệp nhị phân hoặc ví dụ: trong tệp cấu hình được tạo. Bạn muốn --prefix là đường dẫn cài đặt được sử dụng trong thời gian chạy. – nos

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