My開発メモ

ハーバード大学のコンピュータサイエンス入門(C)を見る

CS50用にCライブラリが公開されている。

使い方

CS50 Library for C
https://cs50.readthedocs.io/libraries/cs50/c/

今回は、ソースをコンパイルしてインストールしてみた。

https://github.com/cs50/libcs50/releases から

v11.0.1 をダウンロードした。

libcs50-11.0.1.zip

これを解凍し、できたディレクトリにて 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, ライブラリ

カウント: 181