2011-07-02 43 views
6

Tôi đang cố gắng để biên dịch php cho cánh tay và có tiến bộ tốt nhưng tôi hoàn toàn bị mắc kẹt nơi nó muốn chạy php chính nó (không có ý tưởng tại sao). vì nó là một nhánh nhị phân và không phải là intel (nền tảng xây dựng của tôi) nó sẽ không chạy:Cross biên dịch php

/bin/sh: /path-to-build/sapi/cli/php: cannot execute binary file 

Làm cách nào để khắc phục điều này? Các kịch bản configure hiểu Tôi chéo biên dịch nhưng đã không làm bất cứ điều gì về nó (từ nhật ký cấu hình):

checking whether the C compiler (/path-to-compiler/arm-none-linux-gnueabi-gcc) is a cross-compiler... yes 

Tôi đang biên soạn php-5.3.6 với dòng lệnh configure:

export CC=/path-to-cc/arm-none-linux-gnueabi-gcc 
../configure --prefix=/prefix-path/ --host=arm-none-linux-gnueabi 
      --disable-libxml --disable-dom --disable-openssl 
      --without-iconv --without-openssl --disable-simplexml 
      --disable-xml --disable-xmlreader --disable-xmlwriter 
      --without-pear --without-sqlite --without-sqlite3 
      --disable-pdo --without-pdo-sqlite 
+0

tôi sẽ đưa các toolchain trong đường dẫn, chỉ cần không được thiết lập 'CC' sau đó xác định' --host = tay-none-linux-gnueabi' nên để 'configure' tìm tất cả mọi thứ cần thiết: trình biên dịch, linker, dải vv –

+0

nó không quan trọng ... nó không thành công trên php, không phải trên các công cụ – Dani

+0

là bạn chắc chắn nó liên kết một cách chính xác? những gì tôi có nghĩa là nó không phải vì CC là arm-none-linux-gnueabi-gcc 'cấu hình' giải quyết các công cụ toolchain khác đúng ..." không thể thực thi tệp nhị phân "có thể biểu thị một vấn đề liên kết vì' cấu hình' không sử dụng liên kết thích hợp (vì bạn không đặt 'LD') –

Trả lời

5

tôi đã có thể để giải quyết vấn đề này của riêng tôi bằng cách vô hiệu hóa phar. Tôi hy vọng vô hiệu hóa rất nhiều mô-đun sẽ không phá vỡ một cái gì đó nội bộ.

+1

Có bất kỳ nơi nào bạn có thể giải thích cách bạn hoàn thành quy trình này không?Tôi đang cố gắng làm điều tương tự ngay bây giờ và đang gặp khó khăn lớn. – meanbunny

2

Xây dựng không biên dịch chéo và sau đó, khi biên dịch chéo, trỏ tới phiên bản máy chủ của php bằng cách ghi đè lên một biến trong makefile trên dòng lệnh khi chạy.

Cái gì như:

make PHP_VAR_NAME=path to php built for host 
1

tôi quản lý để biên dịch PHP cho cánh tay với các thông số sau:

export PATH="$PATH:/toolchains/gnu_cortex-a9_tools/usr/bin" 
export ARCH=arm 

cấu hình kịch bản:

./configure --build=x86_64-unknown-linux-gnu --host=arm-linux-uclibcgnueabi --prefix=/usr/arm CC="arm-linux-uclibcgnueabi-gcc --sysroot=/toolchains/gnu_cortex-a9_tools/" --disable-libxml --disable-dom --without-iconv --without-openssl --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear --without-sqlite3 --disable-pdo --without-pdo-sqlite --disable-phar 

Tiếp theo

make 
1

Tôi đã giải quyết được vấn đề tương tự trong khi biên dịch chéo PHP 5.6.0 bằng cách chỉnh sửa Makefile sau khi chạy tập lệnh configure. Chỉ cần thay thế tất cả các lần xuất hiện của

$ (top_builddir)/$ (SAPI_CLI_PATH)

với

/usr/bin/php

đâu /usr/bin/php là máy chủ của bạn php cli. Đảm bảo cài đặt được cài đặt, ví dụ: sudo apt-get install php5-cli cho Debian/Ubuntu.

Sau khi thực hiện mở rộng để Phar xây dựng tốt

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