我需要从最新的 libpcap 构建一个静态库,并将其“包含”在 C 源代码中,以便针对 ARM-v7-a 架构 (Nexus One) 进行交叉编译。
我已经尝试了好几天了,希望有人能给我提示。
而且我无法使用 NDK 或 Java 包装函数。它需要像:
$ -o prog prog.c [-选项] 稍后我将能够通过 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 build/tools
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将其推送到您的设备中。
现在一切正常:)再次感谢
最佳答案
由于 Android 使用不同的运行时(仿生),因此最好使用 NDK,它具有相应链接应用程序所需的组件。
NDK 允许您将其作为 standalone toolchain 运行,因此您可以通过其 sysroot
功能直接启动 gcc
。
一个重要的提示是,在调用 gcc
时指定的路径中不要使用 ~
,它不太友好。
关于android - 交叉编译的 Android arm-v7-a C 代码中的静态 libpcap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837298/