Как правильно установить библиотеку cs50.h в OS X 10.10.1?

Я пытаюсь установить библиотеку cs50 https://manual.cs50.net/library/#mac_os чтобы я мог скомпилировать c-код для класса в моей OS X 10.10.1. К сожалению, у меня есть некоторые проблемы.

Позвольте мне рассказать вам о том, что я сделал до сих пор. Как указано в приведенной выше ссылке, я ввел в терминал bash следующие команды:

$ ls
cs50.c  cs50.h
$ gcc -c -ggdb -std=c99 cs50.c -o cs50.o
$ ar rcs libcs50.a cs50.o
$ rm -f cs50.o
$ chmod 0644 cs50.h libcs50.a
$ sudo mkdir -p /usr/local/include
$ sudo mv -f cs50.h /usr/local/include
$ sudo mkdir -p /usr/local/lib
$ sudo mv -f libcs50.a /usr/local/lib
$ cd ..
$ rm -rf library50-c-5

После, казалось бы, правильной установки библиотеки я запустил gcc generate.c -o generate, чтобы скомпилировать файл. Я получил следующую ошибку:

$ pwd
home/Developer/pset3/find
$ ls
Makefile    find.c      generate.c  helpers.c   helpers.h
$ gcc generate.c -o generate
generate.c:17:10: fatal error: 'cs50.h' file not found
#include <cs50.h>
         ^
1 error generated.
$ 

У меня также была такая же ошибка, когда я запускал gcc generate.c -o generate -lcs50

Почему файл cs50.h не найден? Файл устанавливается правильно?

Я искал похожие вопросы, но другие, похоже, столкнулись с немного другой проблемой:


person Dela    schedule 25.01.2015    source источник
comment
Вам нужны -I /usr/local/include и -L /usr/local/lib в командной строке (и -L должно предшествовать -lcs50).   -  person Jonathan Leffler    schedule 25.01.2015
comment
ОТ: Я ненавижу этот модуль. Заголовок начинается с typedef char* string; и не становится лучше. фу.   -  person WhozCraig    schedule 25.01.2015
comment
@WhozCraig FWIW, библиотека не предназначена для общего использования. Он предназначен для облегчения преподавания курса программирования CS50. На третьей неделе курса инструктор Дэвид Дж. Малан рассказывает, что string — это просто псевдоним для char*, и начинает объяснять, что это значит. Честно говоря, я впечатлен тем, что они все еще используют C. Весь курс доступен бесплатно онлайн на edx.org.   -  person hashemi    schedule 13.07.2015


Ответы (1)


После установки библиотеки cs50 я добавил это в свой файл ~/.bashrc.

function make50 { gcc "$1".c -o "$1" -I /usr/local/include -L /usr/local/lib -lcs50; }

затем запустите новый терминал или просто введите файл ~/.bashrc в текущий терминал

source ~/.bashrc

Теперь предположим, что у вас есть каталог с файлом с именем generate.c. Вы должны иметь возможность запускать make50 generate (без «.c»), и функция должна вызывать компилятор со всеми необходимыми аргументами.

user@macbook:~/project$ ls
generate.c
user@macbook:~/project$ make50 generate
user@macbook:~/project$ ls
generate   generate.c

При необходимости вы можете добавить к своей функции дополнительные пути к библиотекам в ~/.bashrc.

person Tommy Malmqvist    schedule 02.12.2015