【问题标题】:ndk The filename or extension is too longndk 文件名或扩展名太长
【发布时间】:2013-10-17 20:38:16
【问题描述】:

我正在尝试使用 ndk-build 命令为 Android 构建一个共享对象,源代码编译正常,但随后出现此错误:

make (e=206): The filename or extension is too long.

如果有人能告诉我是什么导致了这个问题以及如何解决它。

谢谢。

【问题讨论】:

  • 请贴出命令行。
  • 你做了什么导致这个错误?它在抱怨哪个文件名?
  • 编译过程大约需要 15 分钟,然后为每个源文件提供 Like ("Compilethumb : ModlueName
  • 我现在开始了一个新的构建过程并将其转储到一个txt文件中,完成后我将发布一个指向pastebin及其内容的链接

标签: c android-ndk


【解决方案1】:

您点击了Windows command length limit。您应该使用一些静态库作为解决方法。通常,人们使用以 include $(BUILD_STATIC_LIBRARY) 结尾的单独 Android.mk 文件编译其源代码树的分支,然后在以 $(LOCAL_STATIC_LIBRARIES) 结尾的“主”jni/Android.mk include $(BUILD_SHARED_LIBRARY)。您的ndk-build 将加载这个“主”makefile,因此它应该包含(显式或使用某种嵌套方法)所有静态库makefile。

但这只是一种方便。如果您像现在一样使用单个 jni/Android.mk 文件,您可以获得相同的结果。

您可能还会发现将静态库列为$(LOCAL_WHOLE_STATIC_LIBRARIES) 更容易 - 这样您就可以保证列出这些库的顺序不会导致链接问题。

【讨论】:

  • 感谢您的重播,但是从命令行输出中可以看到,我有 1450+ 个 c 源文件分散在多个文件夹和子文件夹中,我认为这需要相当长的时间将我的 andorid.mk 文件拆分为多个 make 文件并将它们组合起来,这当然是我最后的手段,但是有没有办法在没有命令行的情况下编译该 Android.mk 文件(我正在运行 Windows 7),我意思是另一个不受上述 Windows 命令长度限制(8191 个字符)约束的应用程序,我使用了 eclipse builder,但它给出了相同的错误。
  • 使用ubuntu而不是windows 7构建会更容易吗?
  • 正如我所解释的,您可以将所有内容保存在一个 Android.mk 文件中,并且可以通过简单地以半自动方式添加一些“分隔符”来完成拆分。如果您将 Android.mk 放入 pastebin 或类似文件中,我可以为您提供帮助。
  • 那将不胜感激,这是Android.mk 文件,谢谢。
  • 谢谢,你让我走上了解决这个问题的正确轨道,我按原样尝试了你的代码,它给出了一些未定义的引用问题,因为一些静态库在其他库中有依赖关系,这是我的现在开始解决这些问题。
【解决方案2】:

您可以将其添加到 Application.mk
APP_SHORT_COMMANDs :=true

这对我有用。

【讨论】:

    【解决方案3】:

    也许作为一种解决方法,您可以尝试将目录“D:\MyFiles\Android\Datte\obj\local\armeabi\objs\ngspice\spicelib”替换为驱动器号,使用:

    subst X: "D:\MyFiles\Android\Datte\obj\local\armeabi\objs\ngspice\spicelib"
    

    这可以节省一些空间并生成更小的命令行。但是,正如 Alex Cohn 所回答的,它可能无法解决您的问题,具体取决于 Windows 命令长度限制。此外,您必须更改您的 makefile 并更改,例如,

    D:/MyFiles/Android/Datte//obj/local/armeabi/objs/ngspice/spicelib\parser\inp2y.o
    

    X:\parser\inp2y.o
    

    【讨论】:

    • 谢谢,我不认为它会起作用,因为 Windows command length limit Alex Cohn refrenced 说我的命令只有 8191 个字符,而且我有 1450 多个源文件,这意味着我不能通过减少路径长度来实现它,仅文件名就会超过该限制。
    • 使用ubuntu而不是windows 7构建会更容易吗?
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2019-08-19
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多