2

我需要从最新的 libpcap 构建一个静态库,并将其“包含”在 C 源代码中,以便为 ARM-v7-a 架构(Nexus One)进行交叉编译。

我已经尝试了几天,希望有人能给我提示。

而且我既不能使用 NDK 也不能使用 Java-wrapper 函数。它需要像:

$ -o prog prog.c [-options] 稍后我将能够通过 adb 推送可执行文件。

我已经尝试通过 apt-get 安装 CodeSourcery 和 arm-linux-gnueabi(我在 Kubuntu Linux 上),没有任何工作正常。

我达到的最大目标是一个愚蠢的简单的 helloworld 文件:

arm-linux-gnueabi-gcc -static -o prog prog.c

这是在我的智能手机下执行的。

你知道我可以得到一个更复杂的程序,包括 libpcap 吗?我认为它应该处理 libpcap 目录中的 .a 或 .so 文件,但我真的不明白......在此先感谢

编辑 -已解决:正如 auselen 所说,我已经尝试过使用 NDK 独立工具链并且我成功了。

这就是我所做的,以防有人遇到我同样的问题:

1)下载Android SDK和NDK(后者此时为r8d版本)

2)进入NDK文件夹并输入

cd 构建/工具

make-standalone-toolchain.sh --platform=android-3 --install-dir=$HOME/new_toolchain --ndk-dir=YOUR_NDK_PATH

cd $HOME/new_toolchain

(我已将 helloworld.c 文件放在此文件夹中,但当然您可以将 PATH 添加到 .bashrc 文件中以提高效率)

bin/arm-linux-androideabi-gcc helloworld.c -o helloworld

3)通过adb将其推送到您的设备中。

现在一切正常:)再次感谢

4

1 回答 1

2

由于 Android 使用不同的运行时(仿生),因此最好使用具有必要组件的 NDK,以相应地链接您的应用程序。

NDK 允许您将其作为独立的工具链运行,因此您可以直接gcc通过其sysroot功能启动。

一个重要的提示是不要~在调用时指定的那些路径中使用gcc,它不是那么友好。

于 2013-02-13T08:16:29.427 回答