1

这是我第一次安装库。我按照这里的说明进行操作。它来自关于编程的在线课程。

我不是很精通Unix。当我尝试编译其中一个示例 c 文件时,一个 #includes cs50.h 文件,我得到:

cc1: error: /usr/local/include: not a directory

另外,如果我写cd /usr/local/includeor cd /usr/local/lib,它会告诉我它不再是一个目录,即使当我ls /usr/local他们都出现时。

有任何想法吗?

4

1 回答 1

3

鉴于标题中的说明是:

  • 要在您自己的系统上编译为静态库:
  • % 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您应该使用and来验证这个观察结果file /usr/local/*。然后您应该删除文件,创建目录,并将文件复制到新创建的目录中。

这个解释唯一没有解释的是错误消息中缺少的前导斜杠(最初是' cc1: error: usr/local/include: not a directory')。目前,我将其归结为在提出这个问题时出现了转录错误。(评论和编辑证实了这一诊断。)

于 2011-08-08T04:25:16.193 回答