【问题标题】:cross compiling e2fsprogs for arm为 arm 交叉编译 e2fsprogs
【发布时间】:2023-10-12 15:44:01
【问题描述】:

我正在尝试为 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 设备,但它无法正常运行。

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

【问题讨论】:

    标签: android compilation arm libraries


    【解决方案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
      

      干杯!

      【讨论】: