使用arm-linux-androideabi-gcc编译对象时出现问题

2023-11-25

背景

  • OSX 是操作系统
  • R8 NDK

我正在尝试使用 Android GCC 编译器编译以下类...

#include <stdint.h>
int main (void){
   return 0;
}

我使用以下命令执行此操作...

un@un:~/Development/Code/OpenGL$ ~/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-gcc hello.c -o hello

I get...

In file included from hello.c:1:0:
/Users/un/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/include/stdint.h:3:26: fatal error: stdint.h: No such file or directory
compilation terminated.

因此,由于缺乏 gcc 知识(但有一些 Google 能力),我找到了这个并尝试一下......

un@un:~/Development/Code/OpenGL$ ~/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-gcc hello.c -o hello -ffreestanding

我得到...

/Users/un/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory
/Users/un/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtend_android.o: No such file or directory
/Users/un/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lc
/Users/un/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl
collect2: ld returned 1 exit status

有人可以帮助我解决我做错的事情吗?我是否缺少链接或其他内容? Android.mk 不是一个选项。

更新这也不起作用......

arm-linux-androideabi-gcc hello.c --sysroot=~/Development/Android/android-ndk-r8c/platforms/android-9/arch-arm
/Users/jackiegleason/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory
/Users/jackiegleason/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtend_android.o: No such file or directory
/Users/jackiegleason/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lc
/Users/jackiegleason/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl
collect2: ld returned 1 exit status

您必须告诉 GCC 在哪里可以找到 Android 系统文件和标头。要么使用:

  1. ndk-build and an Android.mk with BUILD_EXECUTABLE
  2. or, the --sysroot海湾合作委员会选项

[1]

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := foo
LOCAL_SRC_FILES := foo.c

include $(BUILD_EXECUTABLE)

[2]

# Change `android-9` with the level you target
/path/to/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt\
/darwin-x86/bin/arm-linux-androideabi-gcc\
 --sysroot /path/to/android-ndk-r8c/platforms/android-9/arch-arm/\
  foo.c -o foo

# Or generate a ready-to-use standalone toolchain (better)
/path/to/android-ndk-r8c/build/tools/make-standalone-toolchain.sh \
--platform=android-9 \
--install-dir=/tmp/my-android-toolchain

export SYSROOT=/tmp/my-android-toolchain/sysroot

/path/to/arm-linux-androideabi-gcc --sysroot $SYSROOT foo.c -o foo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用arm-linux-androideabi-gcc编译对象时出现问题 的相关文章

随机推荐

  • Android - 可绘制重复形状来创建图案

    我需要创建一个图案来设置为某些背景View 我希望该模式看起来像这样 我不想将任何图像导入到可绘制对象中 而是想创建自己的形状 图层列表 最终目标是有一个图案作为背景 是否可以在不导入任何外部图像的情况下实现这一目标 您可以通过创建自定义形
  • verifyError - 验证者拒绝类

    我正在开发 2 2 minSdkVersion 8 突然我收到这个错误 arbitrarily rejecting large method regs 75 count 28584 rejected Lcom Demo Loyalty Se
  • 角度材质表字母数字排序行为

    我在角度材质表中遇到问题 尽管它在技术上是正确的 但我在想是否有另一种方法可以解决这个问题 假设我有 5 个代码 F1 F2 F5 F9 F10 角度材质表升序排列顺序将是 F1 F10 F2 F5 F9 但我期待它是 F1 F2 F5 F
  • 为什么验证会违反单子定律?

    On SO解释了为什么 scalaz cats Scala 或 Arrow Kotlin 中的 Validation 不能是 monad 据我了解 这是因为他们根据应用函子对单子进行了建模 并且作为应用的验证的所需行为 收集所有无效值 与作
  • 字符串流提取整数

    为什么我无法将整数值提取到Num多变的 include
  • 如何访问注释属性中描述的字段

    是否可以访问字段值 其中字段名称在注释中描述 该注释注释类中的另一个字段 例如 Entity public class User NotBlank private String password Match field password p
  • 如何防止 FOR JSON PATH 转义查询结果?

    我正在尝试编写一个相当复杂的 SQL 查询 生成 JSON 作为结果 除了一些硬编码数组之外 一切都工作得很好 我需要在必须使用的层次结构中更深入UNION ALL创造 我生成了一个查询 在此处显示了我的问题 不需要数据 我在 Azure
  • 使用 monad 堆栈进行依赖注入

    I m 尝试不同的方法执行有时称为依赖项注入的操作 为此 我详细阐述了一个天气应用程序的简单示例 我们要在其中获取天气数据 从网络服务或硬件设备 存储天气数据 可以是数据库或简单的文件 并报告 将其打印到屏幕上 或说出天气 这个想法是编写一
  • 在nodejs中将数据从子级传输到父级

    我有一个nodejs 父进程 它启动另一个nodejs 子进程 子进程执行一些逻辑 然后将输出返回给父进程 输出很大 我正在尝试使用管道进行通信 正如 child send 方法的文档中所建议的那样 顺便说一句 该方法工作正常 我希望有人建
  • IP_TRANSPARENT 用法

    我正在为 LAN 上的 Raspberry Pi 上的所有端口 1 65535 实现透明的 TCP UDP 代理 我目前正在测试将目标端口 80 的 TCP 数据包路由到 Raspberry Pi 这个想法是 一个接口 参见 代理 ip 捕
  • Android中如何获取内部存储的绝对路径

    内部存储路径 考虑上面的图片 它显示内部存储中的文件夹和文件 我的问题是我无法获取内部存储的绝对路径 我尝试过使用 字符串路径 getFilesDir getAbsolutePath 但它给了我应用程序存储的路径 我的目标是将文件从我的应用
  • powershell 无法识别 pipelinev

    我确定pipenv安装在以下路径中C Users Owner gt pip install pipenv 然后得到如下回复 Requirement already satisfied setuptools gt 36 2 1 in c us
  • R Shiny 自动开始下载

    我想在按下按钮时初始化 R Shiny 中文件的下载 并在生成文件之前进行一些检查 我用 downloadHandler 愚弄了周围 https shiny rstudio com gallery file download html 但我
  • Java:如何从 servlet 将文件上传到 WebDAV 服务器?

    我的 ajax 应用程序将文件从用户的浏览器上传到 Java 应用程序容器 我想做的是 上传完成后 我想将文件 发送 到 WebDAV 服务器 由主机名 即 localhost 端口 即 8080 和我想要的位置标识存储文件 即 dir1
  • 如何打开Neo4J Webadmin进行远程控制?

    我已经在我的服务器上的端口 7474 上安装了 Neo4J 实例 我的域也在使用该服务器 并且我希望使用如下用户名和密码远程使用 webadmin example com 7474 有没有办法做到这一点 我在 Neo4J 文档中找不到任何指
  • LINQ to SQL:如何更新唯一字段而不检索整个实体

    当我知道实体 ID 时 我想更新实体的唯一字段 在 LINQ to SQL 中是否可以不检索完整实体 使用 DataContext 中的所有字段 这是开销 是否可以创建实体并将其附加到 DataContext 并标记要在 DataConte
  • Mongoid 和 Rails 的字段别名

    MongoDB 中的常见做法是使用短键名来节省空间 例如 人们可能想使用 fn 而不是 first name 然而 在你的应用程序中 如果你到处使用 fn 你就完蛋了 太丑了 特别是对于 Rails 在 Mongoid 中声明字段时是否有一
  • 游戏点和框的数据结构

    什么是一个好的数据结构来表示游戏的状态点和框 我想出了使用 2 个布尔矩阵来表示水平线和垂直线 但也许有一种更优雅的方法来做到这一点 以及操作 add line 检查线 方格 使用一对二维布尔数组 称为linesX and linesY我感
  • 直接从 Perforce 命令行更改工作区 clobber 选项

    如何从命令行更改 perforce 规格 我想做的是 我有一个工作区 其 clobber 选项设置为noclobber 默认值 现在我想把它改成clobber 我知道我可以直接从p4v 但我不想要那样 我也知道如果我跑p4 client 它
  • 使用arm-linux-androideabi-gcc编译对象时出现问题

    背景 OSX 是操作系统 R8 NDK 我正在尝试使用 Android GCC 编译器编译以下类 include