&引用;cc1:错误:/usr/local/include:不是目录;安装C库之后

&引用;cc1:错误:/usr/local/include:不是目录;安装C库之后,c,unix,cs50,C,Unix,Cs50,这是我第一次安装库。我按照指示做了。这是一个关于编程的在线课程 我不太懂Unix。当我试图编译一个示例c文件时,我得到: cc1: error: /usr/local/include: not a directory 另外,如果我写cd/usr/local/include或cd/usr/local/lib,它会告诉我它不再是目录,即使当我ls/usr/local时它们都会出现 有什么想法吗?鉴于标题中的说明是: 要在您自己的系统上编译为静态库,请执行以下操作: %gcc-c-ggdb-std

这是我第一次安装库。我按照指示做了。这是一个关于编程的在线课程

我不太懂Unix。当我试图编译一个示例c文件时,我得到:

cc1: error: /usr/local/include: not a directory
另外,如果我写
cd/usr/local/include
cd/usr/local/lib
,它会告诉我它不再是目录,即使当我
ls/usr/local
时它们都会出现


有什么想法吗?

鉴于标题中的说明是:

  • 要在您自己的系统上编译为静态库,请执行以下操作:
  • %gcc-c-ggdb-std=c99 cs50.c-o cs50.o
  • %ar rcs libcs50.a cs50.o
  • %rm-f cs50.o
  • %cp cs50.h/usr/local/include
  • %cp libcs50.a/usr/local/lib
请注意使用“%”作为提示。它指示操作应作为root用户完成

除非您的系统配置错误,否则您需要使用root权限将文件复制到
/usr/local
下的目录中。例如,您可以使用
sudo
作为命令的前缀:

sudo cp cs50.h /usr/local/include
sudo cp libcs50.a /usr/local/lib
我们可以推断(具有相当高的置信度)您还没有目录
/usr/local/include
/usr/local/lib
,并且您现在有两个文件(不是目录)称为:

  • /usr/local/include
    ,其中包含标头cs50.h
  • 包含静态库的
    /usr/local/lib
您应该使用
ls-l/usr/local
或者
file/usr/local/*
验证此观察结果。然后您应该删除文件,创建目录,并将文件复制到新创建的目录中


这个解释唯一没有解释的是错误消息中缺少的前导斜杠(它最初说的是“
cc1:error:usr/local/include:nota directory
”)。现在,我把这归因于问这个问题时的抄写错误。(注释和编辑确认诊断。)

鉴于标题中的说明如下:

  • 要在您自己的系统上编译为静态库,请执行以下操作:
  • %gcc-c-ggdb-std=c99 cs50.c-o cs50.o
  • %ar rcs libcs50.a cs50.o
  • %rm-f cs50.o
  • %cp cs50.h/usr/local/include
  • %cp libcs50.a/usr/local/lib
请注意使用“%”作为提示。它指示操作应作为root用户完成

除非您的系统配置错误,否则您需要使用root权限将文件复制到
/usr/local
下的目录中。例如,您可以使用
sudo
作为命令的前缀:

sudo cp cs50.h /usr/local/include
sudo cp libcs50.a /usr/local/lib
我们可以推断(具有相当高的置信度)您还没有目录
/usr/local/include
/usr/local/lib
,并且您现在有两个文件(不是目录)称为:

  • /usr/local/include
    ,其中包含标头cs50.h
  • 包含静态库的
    /usr/local/lib
您应该使用
ls-l/usr/local
或者
file/usr/local/*
验证此观察结果。然后您应该删除文件,创建目录,并将文件复制到新创建的目录中


这个解释唯一没有解释的是错误消息中缺少的前导斜杠(它最初说的是“
cc1:error:usr/local/include:nota directory
”)。现在,我把这归因于问这个问题时的抄写错误。(一条注释和编辑确认了该诊断。)

看起来您的错误消息指向的是相对目录,而不是绝对目录。你忘了在什么地方加个正斜杠了吗?我想应该是
/usr/local/include
@Alex,这是一个打字错误,对不起。@Mohammad我在安装库的时候确实需要sudo。如果说明上说
cp cs50.h/usr/local/include
,我必须使用
sudo cp cs50.h/usr/local/include
。很抱歉,我错误地单击了删除按钮,它看起来像是您的错误消息,它指向的是相对目录,而不是绝对目录。你忘了在什么地方加个正斜杠了吗?我想应该是
/usr/local/include
@Alex,这是一个打字错误,对不起。@Mohammad我在安装库的时候确实需要sudo。如果说明上说
cp cs50.h/usr/local/include
,我必须使用
sudo cp cs50.h/usr/local/include
。很抱歉,我错误地点击了删除按钮,通常是
提示符,而不是
%
,表示根。@Keith:哦…麻烦…是的,你说得对…“%”表示另一个罪恶-使用C外壳。这不是我得到的提示…谢谢,这似乎解决了原来的问题。虽然我在复制文件的时候还得用sudo。现在我还得到了一个新的错误,当我
gcc-of2c.of2c.c-lcs50
时。“未定义的符号”@fakaff:哪些符号是未定义的?另外,您的输出文件名是一个常规名称:您通常会编写
gcc-o f2c f2c.c-lcs50
(或者,
gcc-o f2c.o-c f2c.c
)。我得到:
未定义的符号:“\u getfloat”,引用自:\u main in in ccG8nNEz.o ld:symbol未找到
通常是
提示符,而不是
,表示根。@Keith:噢……麻烦……是的,你说得对……“%”表示另一种罪恶——使用C外壳。这不是我得到的提示…谢谢,这似乎解决了原来的问题。虽然我在复制文件的时候还得用sudo。现在我还得到了一个新的错误,当我
gcc-of2c.of2c.c-lcs50
时。“未定义的符号”@fakaff:哪些符号是未定义的?另外,您的输出文件名是一个常规名称:您通常会编写
gcc-o f2c f2c.c-lcs50
(