gpt4 book ai didi

gcc - android 工具链缺少 crtbegin_so.o(自定义构建)

转载 作者:行者123 更新时间:2023-12-04 09:55:52 24 4
gpt4 key购买 nike

我已经使用 android build-gcc.sh 脚本将 gdc 与 gcc 一起编译,并在 build/core/definitions.mk 中包含了一个新的 stub ,以作为构建过程的一部分来处理 D 语言文件。我知道此时一切正常,但我的问题是链接:

当我建立一个项目时,我得到这个错误:

ld: crtbegin_so.o: No such file: No such file or directory

对于常规的纯 c 项目也是如此。现在我在我的构建目录中快速查找,发现文件 (crtbegin_so.o) 确实存在于我在编译 gcc 时指定的 sysroot 中(或者更确切地说,当 build-gcc.sh 构建它时)。
  • 我可以寻找哪些东西来解决这个问题?
  • 在本地复制文件并直接链接到它们是一个不错的解决方案
    临时?
  • 为什么 ld(或 collect2)会尝试将这些包含在 gdc(D 语言)链接中?
  • 最佳答案

    该问题也出现在适用于 linux 的 NDK r7c 上。

    发现工具链忽略了平台位置($NDK_ROOT/platforms/android-8/arch-arm/usr/lib/),在工具链路径中搜索,不正确。

    但是,由于工具链也在当前目录中搜索文件,因此一种解决方案是将正确的平台 crtbegin_so.o 和 crtend_so.o 符号链接(symbolic link)到源目录中:
    cd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtbegin_so.acd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtend_so.a
    因此,您的第二点应该可以解决(您可以在其中进行符号链接(symbolic link),而不是副本)

    注意 1:这假设代码是使用 NDK 为 API8 (Android 2.2) 编译的。请根据您的要求将路径更改为正确的路径。

    注 2:配置使用的标志:

    ./configure \
    --host=arm-linux-androideabi \
    CC=arm-linux-androideabi-gcc \
    CPPFLAGS="-I$NDK_ROOT/platforms/android-8/arch-arm/usr/include/" \
    CFLAGS="-nostdlib" \
    LDFLAGS="-Wl,-rpath-link=$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/ -L$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/" \
    LIBS="-lc"

    关于gcc - android 工具链缺少 crtbegin_so.o(自定义构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881164/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com