ndk文件名或扩展名太长

时间:2013-10-17 20:38:16

标签: c android-ndk

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

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

如果有任何人可以告诉我导致此问题的原因以及如何解决问题。

感谢。

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:4)

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

这对我有用。

答案 2 :(得分:0)

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

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

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

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

X:\parser\inp2y.o