如何将库添加到c中的“make”命令

如何将库添加到c中的“make”命令,c,makefile,cs50,C,Makefile,Cs50,这是头文件及其C文件: 和 现在,我在下面的示例中使用了它们——现在不再可用 我已经将头文件放在/usr/bin/include或类似的文件中,当我尝试使用gcc-o xxx xxx.c编译代码时,它不起作用,因此尝试修复此问题,并且以下方法奏效:-不再可用 现在我想做一些事情,使“make”命令像gcc一样工作 我需要做什么 以下是老话题: 我使用gcc命令 编译C程序,但要经过一段时间 我总是遇到麻烦。我需要 编译新的头文件并使用 它是一个图书馆 名为cs50.h的头文件 所以在做了之后,

这是头文件及其C文件: 和

现在,我在下面的示例中使用了它们——现在不再可用

我已经将头文件放在/usr/bin/include或类似的文件中,当我尝试使用gcc-o xxx xxx.c编译代码时,它不起作用,因此尝试修复此问题,并且以下方法奏效:-不再可用

现在我想做一些事情,使“make”命令像gcc一样工作

我需要做什么

以下是老话题:

我使用gcc命令 编译C程序,但要经过一段时间 我总是遇到麻烦。我需要 编译新的头文件并使用 它是一个图书馆

名为cs50.h的头文件

所以在做了之后,我可以 使用以下命令编译

gcc -o xxx xxx.c -lcs50
它可以工作,但现在我想使用“make” 命令,但我不能让它工作

它只是不编译头文件 和gcc在我编辑之前一样 它需要接受cs50库

所以现在我想添加到“make” 命令如下:-lcs50

有人能帮我吗


您是否忘记了您必须告诉gcc CS50库位于哪个目录中

gcc … -L/directory/for/cs50_library -lcs50

您是否忘记了您必须告诉gcc CS50库位于哪个目录中

gcc … -L/directory/for/cs50_library -lcs50

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

LDLIBS = -lcs50 如果要对建筑使用Make的默认隐式规则,则只需这样做。如果您使用的是显式规则,则需要将$LDLIBS添加到显式规则中

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

echo LDLIBS = -lcs50 > Makefile 或者告诉make通过在环境中的LDLIBS中指定所需的库来链接某些库。例如,如果您使用的是sh派生的shell,而不是csh或tcsh,则可以执行以下操作:

LDLIBS=-lcs50 make target env LDLIBS=-lcs50 make target 如果您使用的是csh变体,则可以执行以下操作:

LDLIBS=-lcs50 make target env LDLIBS=-lcs50 make target 或者再做一次,对于非csh壳

export LDLIBS=-lcs50
在运行之前,请确认。对于csh变体,请在Makefile顶部附近设置env LDLIBS-lcs50,添加以下行:

LDLIBS = -lcs50 如果要对建筑使用Make的默认隐式规则,则只需这样做。如果您使用的是显式规则,则需要将$LDLIBS添加到显式规则中

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

echo LDLIBS = -lcs50 > Makefile 或者告诉make通过在环境中的LDLIBS中指定所需的库来链接某些库。例如,如果您使用的是sh派生的shell,而不是csh或tcsh,则可以执行以下操作:

LDLIBS=-lcs50 make target env LDLIBS=-lcs50 make target 如果您使用的是csh变体,则可以执行以下操作:

LDLIBS=-lcs50 make target env LDLIBS=-lcs50 make target 或者再做一次,对于非csh壳

export LDLIBS=-lcs50
在运行之前,请确认。对于csh变体,请执行setenv LDLIBS-lcs50

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

make <filename_without_extension> LDLIBS="-l<lib1> -l<lib2>"
输出将编译命令展开为

g++ -I/usr/include/  -L/usr/lib/  server1.cpp  -lcpprest -lpthread -lssl -lcrypto -o server1

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

make <filename_without_extension> LDLIBS="-l<lib1> -l<lib2>"
输出将编译命令展开为

g++ -I/usr/include/  -L/usr/lib/  server1.cpp  -lcpprest -lpthread -lssl -lcrypto -o server1

如果你给我们看你的Makefile,可能会有人帮你。Ubuntu的粘贴已经被删除了。如果没有他们,这个问题对其他人没有用处。我投票将这个问题作为主题外的问题结束,因为定义代码和问题的链接不再可用,这里的信息并不是独一无二的,关于类似的问题还有很多其他的问题。如果你给我们看你的Makefile,可能会有人帮你。Ubuntu的粘贴已经被删除了。这个问题对于没有它们的其他人来说是没有用处的。我投票将这个问题作为主题外的问题来结束,因为定义代码和问题的链接不再可用,并且这里的信息也不是非常独特。还有许多其他关于类似问题的问题。@Xmasterrrr$EDITOR Makefile ie,vi Makefile,或emacs makefile或nedit GNUMakefile。。。。可能性是无穷的它的位置在哪里?对不起,我想我弄错了。。。所以我不知道你是说make文件是我编译源代码时生成的还是什么?@Xmasterrrr make文件通常位于运行make的同一目录中。它将被称为“makefile”或“makefile”或“GNUmakefile”。它可能在其他地方,例如,它可能是RCS/Makefile,v,但可能不是。@Xmasterrrr而不是运行“make”,如果运行“cat Makefile”尝试各种名称,或者执行“ls?ake*”以获得您所处平台的列表,会发生什么情况?@Xmasterrrr$EDITOR Makefile ie、vi Makefile或emacs Makefile或nedit GNUMakefile。。。。可能性是无穷的它的位置在哪里?对不起,我想我弄错了。。。所以我不知道你是说make文件是我编译源代码时生成的还是什么?@Xmasterrrr make文件通常位于运行make的同一目录中。它也将被称为
“makefile”或“makefile”或“GNUmakefile”。它可能在其他地方,例如,它可能是RCS/Makefile,v,但可能不是。@Xmasterrrr而不是运行“make”,如果运行“cat Makefile”尝试各种名称,或者执行“ls?ake*”以获得您所处的平台的列表,会发生什么?