为 arm 交叉编译 e2fsprogs

Posted

技术标签:

【中文标题】为 arm 交叉编译 e2fsprogs【英文标题】:cross compiling e2fsprogs for arm 【发布时间】:2011-11-22 08:04:53 【问题描述】:

我正在尝试为 arm 交叉编译 extundelete linux 包。我想在我的 android 设备上运行它。

当我尝试运行./configure 时,它会显示Can't find ext2fs library。我发现问题是 extundelete 需要 ext2fs 库。这个库在 e2fsprogs 包中。

所以我尝试交叉编译 e2fsprogs。静态编译是不可能的,因为似乎 e2fsprogrs 需要 --enable-elf-shlibs 才能正确运行 make 命令。我已经用命令构建了 e2fsprogrs:

"./configure --host=arm-none-linux-gnueabi" CC=arm-none-linux-gnueabi-gcc --enable-elf-shlibs && make && make install && make install-libs.

它运行正确,我得到了交叉编译的 e2fsprogs。问题是这是动态编译库,我不知道如何将它传递给 extundelete 交叉编译,然后我必须将哪些档案复制到我的 android 设备。

我认为需要链接我在 e2fsprogs 交叉编译中获得的 .so .a 文件是可能的,但我不明白如何做到这一点。

在我的一次冒险交叉编译 extundelete 中,我得到了二进制 arm extundelete 文件,但它是动态链接编译的并使用共享库。我尝试将 extundelete 二进制文件和 .so 文件从 e2fsprogs 复制到我的 Android 设备,但它无法正常运行。

谁能帮我了解动态交叉编译的奇妙世界?

【问题讨论】:

【参考方案1】:

../configure --host=arm-none-linux-gnueabi --with-cc=arm-none-linux-gnueabi-gcc --with-linker=arm-none-linux-gnueabi-ld -- with-ldopts=--static --prefix=/tmp/target

【讨论】:

【参考方案2】:

请注意,较新的版本(例如 1.43)不再使用 --with-cc 或 --with-ldopts。 --with-linker 也不再使用了。

请改用 CC= 和 LDFLAGS=。 示例:

./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc LDFLAGS=--static --prefox=/target/dirctory

干杯!

【讨论】:

以上是关于为 arm 交叉编译 e2fsprogs的主要内容,如果未能解决你的问题,请参考以下文章

为 ARM 交叉编译 OpenSSH

为 arm 交叉编译 iptables 的问题

为 ARM 交叉编译时共享对象导入错误

使用 Autoconf 为 ARM 进行交叉编译

arm-linux交叉编译器的路径设置问题,怎么办????

为 ARM 交叉编译 ActiveMQ