我只是想将哈佛大学为 cs50 课程创建的 ac 库添加到 Ubuntu。他们提供了如何安装该库的说明,如下所示。
Debian、Ubuntu
首先成为 root 用户,如下所示:
sudo su -
然后按如下方式安装 CS50 库:
apt-get install gcc
wget http://mirror.cs50.net/library/c/cs50-library-c-3.1.zip
unzip cs50-library-c-3.1.zip
rm -f cs50-library-c-3.1.zip
cd cs50-library-c-3.1
gcc -c -ggdb -std=c99 cs50.c -o cs50.o
ar rcs libcs50.a cs50.o
chmod 0644 cs50.h libcs50.a
mkdir -p /usr/local/include
chmod 0755 /usr/local/include
mv -f cs50.h /usr/local/include
mkdir -p /usr/local/lib
chmod 0755 /usr/local/lib
mv -f libcs50.a /usr/local/lib
cd ..
rm -rf cs50-library-c-3.1
我完全按照指示做了。但编译器报告“未定义对函数的引用”——该函数是 Get String。因此,我搜索解决方案并找到了一个。它说使用 switch -l
。
现在当我编译时我使用类似的东西:
gcc –o hello.c 你好 –lcs50
(我不记得确切的命令。)
但是,我无法使用make
更易于使用的命令。
我理解链接库时出现了一些问题。有什么好的办法可以解决这个问题?
答案1
我也在学习 CS50,也遇到了同样的问题。按照 Cs50 的说明操作后,使用 gc 编译代码时出现此错误
/tmp/ccvUiSKS.o: In function `main':
Goodmario.c:(.text+0x21): undefined reference to `GetInt'
collect2: error: ld returned 1 exit status
我完全按照说明操作。我认为你应该继续使用 -lcs50,这并不难。例如,我用来编译程序的命令
gcc Goodmario.c -o Goodmario -std=c99 -lcs50
不太难:D
答案2
您应该添加以下命令以使 GetInt 正常工作:
$ gcc hello.c -I /usr/local/include -L /usr/local/lib -lcs50 -o hello
将“hello.c#”和“hello”重命名为你的输入文件和你想要的输出名称。选项-I/usr/local/include 告诉 gcc 也在 /usr/local/include 中查找头文件。选项-L/usr/local/lib 告诉 gcc(在链接阶段)也在 /usr/local/lib 中查找库,选项-lcs50 告诉 gcc 你需要哪些库。
来源:ubuntuforum.org