【问题标题】:Compiling C code (netcat) to native Android executable将 C 代码 (netcat) 编译为原生 Android 可执行文件
【发布时间】:2011-09-04 07:52:33
【问题描述】:

我正在编写一个使用 Netcat 通过网络连接提供帧缓冲区的 bash 脚本,但首先我需要将它编译为本机可执行文件。我什至让这个脚本在默认安装了 netcat 的 Ubuntu 机器上运行。

我找到了这个https://github.com/android/platform_external_netcat,但根本没有 NDK 的经验。这显然根本不使用 JNI 或 Java,因此制作 Android 应用程序的默认方法不会让我到任何地方。

所以问题是。如何从此源代码中获取可执行文件?

【问题讨论】:

  • 并非如此。我想获得一个 ARM 可执行文件。不是 .apk 包。
  • 设备上可能已经有 netcat (nc) 的编译副本。
  • 很奇怪,不。那是我尝试的第一件事。我的 2.3.3 Galaxy S 默认有 ping,但 netcat 没有。
  • 如果你有一个 /system/xbin 目录,它可能在里面,而不是在你的路径上

标签: android c android-ndk native


【解决方案1】:

如果其他人想知道,这来自 NDK 文档:

SYSROOT=$NDK/platforms/android-<level>/arch-<arch>/
export CC="$NDK/toolchains/<name>/prebuilt/<system>/bin/<prefix>gcc --sysroot=$SYSROOT"
$CC -o foo.o -c foo.c

更具体地说,对于来自https://github.com/android/platform_external_netcat的netcat

SYSROOT=$NDK/platforms/android-19/arch-arm
CC=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT
$CC -DANDROID -c -o atomicio.o atomicio.c
$CC -DANDROID -c -o netcat.o netcat.c
$CC -o netcat atomicio.o netcat.o

根据需要替换来自 SYSROOT 和 CC 的路径。

【讨论】:

    【解决方案2】:

    查看 docs/STANDALONE-TOOLCHAIN.html 下的 Android sdk,它描述了如何将 ndk 用作可以生成 arm 二进制文件的独立编译器。

    【讨论】:

    • 差不多了,谢谢 ;) 另外,正如我刚才发现的,BusyBox 里面还有 netcat ;)
    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多