簡體   English   中英

為arm-linux交叉編譯ltrace

[英]Cross-compiling ltrace for arm-linux

在一堆補丁之后,我能夠運行Makefile,它現在在最后一步崩潰:(。這是我得到的錯誤:

arm-none-linux-gnueabi-gcc main.o libltrace.a -lelf -o ltrace
arm-none-linux-gnueabi-gcc/bin/ld: cannot find -lelf
collect2: ld returned 1 exit status
make: *** [ltrace] Error 1

我想在Android上運行ltrace。 將欣賞任何輸入。

你不能在自己的系統上使用libelf庫。 畢竟你正在嘗試交叉編譯。 你的電腦可能是基於x86的,電話是手臂。 即使您可以說服編譯器鏈接最終的可執行文件,您的x86代碼也不會在arm上運行。

您有兩種選擇:

1)使用交叉編譯器編譯libelf

2)嘗試從Debian存檔中獲取libelf的arm版本,使用dpkg -x將其解壓縮到私有目錄,並嘗試鏈接到該版本。

您可以使用通過完整路徑而不是-l指定庫名稱。

嘗試:apt-get install libelf-dev並看到ld找不到現有的庫

考慮Scratchbox。 我個人討厭交叉編譯,特別是因為我是一個巨大的Python粉絲,並且很難交叉編譯Python,因為它想要運行python可執行文件(剛剛構建的那個)作為構建過程的一部分。 當您在x86桌面上編譯ARM版本的Python時,這顯然會導致問題。 由於Scratchbox使用仿真,因此它(和您)可以在桌面系統(在scratchbox環境中)上運行ARM二進制文件,從而解決了大量的交叉編譯問題。

ScratchBox用於現已解散的Maemo操作系統(在ARM上運行),但人們已成功將其用於Android:

如果你走這條路,請在評論部分告訴我。 我有一個臨時工具虛擬機,當我以前為Maemo開發時。 我現在正在編寫Android軟件,所以我有一些個人興趣讓scratchbox在Android上工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM