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

时间:2013-02-12 16:36:04

标签: android c arm cross-compiling libpcap

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

我已经好几天了,希望有人可以给我一个提示。

不能既不使用NDK也不使用Java包装函数。它需要像:

$ -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 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将其推入您的设备。

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

1 个答案:

答案 0 :(得分:2)

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

NDK允许您将其作为standalone toolchain运行,因此您可以通过其gcc功能直接启动sysroot

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