为 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的主要内容,如果未能解决你的问题,请参考以下文章