【问题标题】:gcc : directory : No such file or directorygcc:目录:没有这样的文件或目录
【发布时间】:2013-01-11 11:52:31
【问题描述】:

我正在尝试从Here 为 linux 3.7 内核构建 mali 驱动程序。

有一个单独的构建脚本,例如,

#!/bin/bash
export KDIR=/path/to/kernel/dir/
..
..
gcc -v//Just for testing purpose printing gcc version
make
gcc -v
... 

实际主机有 2.6 内核,但我指示 make 使用 linux 3.7 内核。上面的make会调用mali驱动的makefile的Makefile。

对于上述脚本, gcc 版本在make 命令前后打印正常,但是当make 进入内核目录时,gcc 无法识别。

它说 gcc : directory : No such file or directory.

arm-gcc 也是如此。猜猜看??

编辑:(制作输出)

make ARCH=arm -C /home/work/linux3.7/ M=/home/work/mali/driver/src/devicedrv/mali modules

make[1] : Entering directory `/home/work/linux3.7/`
gcc : directory : No such file or directory
gcc : directory" : No such file or directory 
<command-line>: warning: missing terminating " character
gcc : directory : No such file or directory
gcc : directory" : No such file or directory 
<command-line>: warning: missing terminating " character
gcc : directory : No such file or directory
gcc : directory" : No such file or directory 
<command-line>: warning: missing terminating " character
gcc : directory : No such file or directory
gcc : directory" : No such file or directory 
<command-line>: warning: missing terminating " character
CC [M]  /home/work/mali/driver/src/devicedrv/mali/common/mali_kernel_core.o
.arm-none-linux-gnueabi-gcc: directory:No such file or directory 
.arm-none-linux-gnueabi-gcc: directory":No such file or directory

make[2] : Leaving directory `/home/work/linux3.7/`

【问题讨论】:

    标签: gcc makefile arm


    【解决方案1】:

    问题出在驱动程序/gpu/vithar/ump/src/devicedrv/Makefile.common。它假定 vithar SDK 已从 SVN 中提取并具有有效的 SVN 修订版(它没有)。

    您有两个选择: 1)编辑上面的文件以跳过svnversion的调用:

    - SVN_REV:=$(shell ((svnversion | grep -qv exported && echo -n 'Revision: ' && svnversion) || git svn info | sed -e 's/$$$$/M/' | grep '^Revision: ' || echo ${MALI_RELEASE_NAME}) 2>/dev$
    + SVN_REV=0
    

    2) 添加到make命令行:

    SVN_REV=0
    

    【讨论】:

      【解决方案2】:

      gcc 识别、发现并执行。错误“gcc: directory: no such file or directory”是由gcc本身给出的。

      由于某种原因,gcc 试图访问不存在的“目录”(即名为“目录”的对象)。

      可能是错误的扩展或意外的环境变量。

      尝试检查适当的Makefile 和您的make 命令。

      例如,如果您发出了诸如

      之类的命令
      KDIR="/usr/Linux Kernel directory" CONFIG=pb-virtex5 BUILD=release make
      

      存在系统误解KDIR 的风险,引入了两个不存在的对象“内核”和“目录”以及一个额外的引号。这种可能性可能解释了您观察到的症状。因此,路径中的额外空格绝对值得检查。

      【讨论】:

      • Warning:: Missing terminating " character 也在那里。有什么线索吗??
      • 这看起来像是一个被gcc 弄乱和解释的字符串,可能是因为某处有一个额外的引号。检查那个 Makefile。您在运行make config 时遇到问题了吗?您是否以任何方式修改了构建环境?
      • 另外:尝试发布make 命令的整个输出,例如十行输出,以及您发出的确切的make 命令。在黑暗中很难诊断出这样的问题。我们甚至不知道错误出现在哪个子目录的处理过程中。
      • 更新了 Make 输出。 KDIR=/path/to/kernel/ 带和不带 "" 给了我同样的错误。
      • 某些东西显然是向gcc 传递了错误的参数,最有可能的候选者是构建脚本。恐怕我们也需要那个。
      【解决方案3】:

      你打错了;你想要的

        echo $(gcc -v)
      

      但实际上,对于那个编码

        gcc -v
      

      够了。

      您应该确保gcc 已正确安装在您的$PATH 中。检查which gcc

      附录

      如果您怀疑您的Makefile 有误,请使用remake 对其进行调试。通常,只需在终端中运行 remake -x 就足以了解正在发生的事情。

      也许您正在向 gcc 传递一些奇怪的参数?还是有错误的#include

      【讨论】:

      • ya.. 但两者都给了我相同的结果。但我的目标不仅仅是打印 gcc 版本。为什么 gcc 在构建过程中没有被识别???
      • 我不明白你的评论。 “gcc 在构建过程中无法识别” 是什么意思?也许你没有安装 GCC 或者你的$PATH 是错误的。
      • $PATH 用 /usr/bin 设置
      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 2021-10-31
      • 2021-12-13
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多