Ubuntu 如何安装自定义c库?

How to install custom c library?


问题

我只是想在Ubuntu上添加一个由哈佛大学为cs50课程创建的c语言库。他们提供了如何安装该库的说明,如下所示。


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。于是,我搜索了一下解决方案,发现了一个。它说要使用 -l 开关。

现在我在编译时使用了这样的方法。

gcc -o hello.c hello -lcs50

(我不记得具体的命令了。)

但是,我不能使用 make 命令,这更容易使用。

我知道在链接库时有一些问题。对这个问题有什么好的解决办法?

请重现错误,并 通过 编辑你的问题 ,提供发生错误的命令的所有输出(包括非错误输出,如果有的话)。在编辑你的问题时,粘贴它,选择它,并使用Ask Ubuntu编辑工具栏中的 <$> 工具来使它正确显示。
正确的命令是:gcc -o hello hello.c -lcs50 你不小心用你编译的hello.c删除了你的hello
答案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你需要哪些库。

s ource: ubuntuforum.org

相同问题还可以参考: How to install custom c library?