android - 交叉编译的 Android arm-v7-a C 代码中的静态 libpcap

标签 android c arm cross-compiling libpcap

我需要从最新的 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/

相关文章:

linux-kernel - Linux内核ARM异常栈init

raspberry-pi - 为 32 位 ARM(从 x86-64)交叉构建 C++ 时 buildrpm 失败

android - 我在android studio中遇到了这个问题。我已经下载了链接中提到的文件,并将其粘贴到哪里

java - 无法使用 android 相机捕获两次

android - 如何在 FragmentPagerAdapter 的某些覆盖方法中设置 fragment Id?

找不到 C 结构的 clang_complete 模式

c++ - 使用 C/C++ 处理 sysfs 内容的最佳方法是什么?

arm - 用于与arm-linux-gnueabi-gcc交叉编译的jansson库

android - 数据更改时不会调用 LiveData onChanged

c - 输出将如何打印?