ハーバード大学のコンピュータサイエンス入門(C)を見る
CS50用にCライブラリが公開されている。
使い方
CS50 Library for C
https://cs50.readthedocs.io/libraries/cs50/c/
今回は、ソースをコンパイルしてインストールしてみた。
https://github.com/cs50/libcs50/releases から
v11.0.1 をダウンロードした。
これを解凍し、できたディレクトリにて make install するだけである。
$ unzip libcs50-11.0.1.zip
$ cd libcs50-11.0.1
$ sudo make install
上記ページには環境設定についても書かれてあったので、その通りにした。
~/.bashrc
CC="clang"
CFLAGS="-fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow"
LDLIBS="-lcrypt -lcs50 -lm"
実験
試してみる。
addition.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// Prompt user for x
int x = get_int("x: ");
// Prompt user for y
int y = get_int("y: ");
// Perform addition
printf("%i\n", x + y);
}
これをコンパイルする。
$ gcc -o addition addition.c
すると、以下のようなエラーが出た。
/usr/bin/ld: /tmp/cczzoszk.o: in function `main':
addition.c:(.text+0x1c): undefined reference to `get_int'
/usr/bin/ld: addition.c:(.text+0x33): undefined reference to `get_int'
collect2: error: ld returned 1 exit status
ライブラリを読み込めていないようである。
上記ページの Usage を見ると、”-lcs50″ というオプションをつけろとあるので、
以下のようにする。
$ gcc -o addition addition.c -lcs50
コンパイルできた。
以下のようにしても、コンパイルできた。
$ gcc -o addition -l cs50 addition.c
実行例
$ ./addition
x: 34
y: 45
79
カテゴリー: C, memo
タグ: c, CS50, ライブラリ
カウント: 180