【问题标题】:About arm-eabi-gcc and cross-compiling关于 arm-eabi-gcc 和交叉编译
【发布时间】:2011-08-20 15:42:09
【问题描述】:

我有一个复杂的开源库需要移植到 安卓 NDK。首先,我需要配置(./Configure)。我明白: 我必须与 /home/user/android-ndk/build/prebuilt/ 进行交叉编译 linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc 我觉得对吗?此实用程序将正确配置库?如果 是的,那么问题2:

1.我正在尝试编译这样一个库:libao。使用这些命令:


PREBUILT = / home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0 
PLATFORM = / home/user/android-ndk/build/platforms/android-3/arch-arm 
INSTALL = / home/user/sox-14.3.2/com 

export CC = "/ home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0/bin/arm-eabi-gcc" 
export CFLAGS = "-fPIC-DANDROID" 
export LDFLAGS = "-Wl,-T, $ PREBUILT / arm-eabi / lib / ldscripts / 
armelf.x-Wl,-rpath-link = $ PLATFORM / usr / lib-L $ PLATFORM / usr / 
lib-nostdlib $ PREBUILT / lib/gcc/arm-eabi/4.4.0/crtbegin.o $ PREBUILT/ 
lib/gcc/arm-eabi/4.4.0/crtend.o-lc-lm-ldl " 

. / Configure - host = arm - with-gnu-ld - enable-shared \ 

在程序集结束时收到以下内容: 配置:错误:在此平台上找不到 16 位类型!

这意味着什么?如何修复和正确配置库? 也许我可以更容易地配置库?

【问题讨论】:

    标签: android configure android-ndk cross-compiling


    【解决方案1】:

    我认为使用 ./configure 脚本为 Android 构建库很难(甚至不可能)。 Android 有自己的构建系统Android.mk 用于本地代码,我认为这将是最简单的方法。您必须手动准备此类 makefile,然后使用 NDK 附带的 ndk-build 脚本。连同 NDK 示例一起安装,您可以在那里查看此类文件的外观。

    如果您只想运行 configure 来生成 config.h,请点击此链接 http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/。 它包含以下 ./configure 参数集可能起作用的信息

    ./configure –host=arm-eabi CC=arm-eabi-gcc CPPFLAGS=”-I$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/include/” CFLAGS=”-nostdlib” LDFLAGS=”-Wl,-rpath-link=$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/ -L$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/” LIBS=”-lc “
    

    【讨论】:

    • 这就是我想要的,但我首先需要配置库!怎么做?我从那以后就不好了。 h 文件!
    • 谢谢!有用!我可能不是所有需要的图书馆 podulyuchil 在他的 LDFLAGS ......你怎么看:图书馆 skonfigurirovanye 这种方法理论上适用于所有 Android 手机,还是只适用于 ARM?
    • 我认为现在所有的安卓手机都有ARM cpu。但这些 CPU 不一样,有些例如包含浮点单元有些不包含。请阅读source-android.frandroid.com/ndk/docs/APPLICATION-MK.html - APP_ABI 和source-android.frandroid.com/ndk/docs/CPU-ARCH-ABIS.html,了解如何选择支持的 CPU 功能。可能是您只选择 armeabi 这应该适用于所有手机,但提供使用 armeabi-v7a 编译的库以更好地支持具有浮点单元的最新 CPU。
    • @Zuljin 我正在使用 "./configure --host=arm-eabi CC=arm-linux-gnueabi-gcc" ,但是当我使用 "file" 命令检查编译文件时,我得到X86_64 。但我想要 ARM
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 2016-12-26
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2023-04-02
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多