Учитывая, что инструкции в заголовке:
- Чтобы скомпилировать как статическую библиотеку в вашей собственной системе:
% 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: not a directory
').На данный момент я объяснил это ошибкой транскрипции, задавая этот вопрос.(И комментарий и редактирование подтверждают этот диагноз.)