2014-10-10 275 views
3

免責聲明:我在這裏是新的,我已經盡我所能按照發布指南,所以請讓我知道如果這需要任何額外的信息。我對Linux開發也比較陌生。交叉編譯ARM的ActiveMQ

背景: 我正在Linux上使用ActiveMQ-cpp構建一個庫。我已經在主機Ubuntu PC上成功構建並運行了它,但是試圖爲目標基於ARM的機器交叉編譯它會產生一些非常深奧的錯誤。

第一步包括使用arm-linux-gcc編譯器構建APR(http://apr.apache.org/)。經過一番研究,以下命令運行配置腳本時幾乎沒有大驚小怪:

CC=/usr/local/arm-linux/bin/arm-linux-gcc ./configure --prefix=/root/apr-arm --host=arm-linux cross_compiling=yes ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no apr_cv_process_shared_works=no 

這允許下一步 - 運行makefile。

本期:進入使在命令行上,在下面的行過早退出:

[...] 
/root/.local/share/Trash/files/apr-1.5.1/build/mkdir.sh include/private 
tools/gen_test_char > include/private/apr)escape_test_char.h 
/bin/bash: tools/gen_test_char: cannot execute binary file 
make[1]: *** [include/private/apr_escape_test_char.h] Error 126 
make[1]: Leaving directory `/root/.local/share/Trash/files/apr-1.5.1' 
make: *** [all-recursive] Error 1 

嘗試的修復:一個解決以下問題,發表了提問者,沒有奏效。有可能我沒有正確地遵循這個過程(Apache Cross Compilation Error ./gen_test_char: cannot execute binary file

在同一主題中,我試着從目錄中暫時刪除問題gen_test_char程序,但巧妙的腳本只是重建它。

我的目標是要麼避免這個錯誤,並在Ubuntu上繼續構建過程,或者考慮其他構建庫的方法。我已經在Windows上的VS2013中毫無困難地構建了它,因此如果可以爲ARM體系結構交叉編譯該項目,我會很樂意繼續這樣做。

回答

0

APR需要gen_test_char被編譯系統不是手臂,爲什麼會得到「斌/慶典:工具/ gen_test_char:無法執行二進制文件」的錯誤,因爲make程序是要在執行gen_test_char您系統,如果你交叉編譯,那麼每次你得到這個錯誤。

要避免此錯誤,請按照下列步驟操作:

1) Cross compile APR which is going to fail 
2) compile APR for system and copy gen_test_char to cross compiled APR's directory. 
3) Again cross compile 

執行上述步驟,你不應該得到「無法執行二進制文件」的錯誤之後。