1

这是头文件及其 C 文件: cs50.hcs50.c

现在我在以下示例中使用它们http://www.paste.ubuntu.com/576370/ - 它不再可用。

我已经将头文件/usr/bin/include或类似的东西放入其中,当我尝试使用 编译我的代码时gcc -o xxx xxx.c,它不起作用,所以尝试解决这个问题并且以下方式有效: http: //www.paste.ubuntu.com/ 576371/ — 不再可用。

现在我想做一些事情来使“make”命令正常工作gcc

我需要做什么?


以下是旧主题:

我正在使用gcc命令编译C程序,但一段时间后我遇到了问题。我需要编译一个新的头文件并将其用作库。

头文件名为cs50.h.

所以在这样做之后就可以了,我可以使用以下代码进行编译

gcc -o xxx xxx.c -lcs50

它可以工作,但现在我想使用“make”命令,但我无法让它工作。

在我编辑它以接受 cs50 库之前,它不会像 gcc 那样编译头文件和库。

所以现在我想在“make”命令中添加以下内容:-lcs50

有人可以帮我吗?

4

3 回答 3

3

在 Makefile 的顶部附近,添加以下行:

LDLIBS = -lcs50

如果您正在使用 Make 的默认(隐式)规则来构建,那么这就是您需要做的一切。如果您使用显式规则,则需要将 $(LDLIBS) 添加到显式规则中。

如果没有 Makefile,则 make 使用默认规则,您可以使用

回声 LDLIBS = -lcs50 > 生成文件

或者通过在环境中的 LDLIBS 中指定所需的库来告诉 make 链接某些库。例如,如果您使用的是 sh 派生的 shell(除了 csh 或 tcsh 之外的任何东西),您可以执行以下操作:

LDLIBS=-lcs50 制作目标

如果您使用的是 csh 变体,您可以执行以下操作:

env LDLIBS=-lcs50 制作目标

或者只是做(同样,对于非 csh shell)

导出 LDLIBS=-lcs50

在运行 make 之前。(对于 csh 变体,执行 setenv LDLIBS -lcs50)

于 2011-03-06T09:40:59.353 回答
1

您可以使用下面的“make”命令来链接库并包含头目录,

make <.c or .cpp source filename_without_extension> LDLIBS="-l<lib1> -l<lib2>"

假设你有 server.cpp 文件要使用 make 命令编译,

make server LDLIBS="-lcpprest -lpthread -lssl -lcrypto" LDFLAGS="-L/usr/lib/" CXXFLAGS="-I/usr/include/"

输出会将编译命令展开为,

g++ -I/usr/include/  -L/usr/lib/  server.cpp  -lcpprest -lpthread -lssl -lcrypto -o server
于 2019-03-29T09:59:57.057 回答
0

你忘了你必须告诉gcc CS50 库在哪个目录吗?

gcc … -L/directory/for/cs50_library -lcs50
于 2011-03-06T09:24:35.073 回答