如何在c中为'make'命令添加库

时间:2011-03-06 09:15:52

标签: c makefile cs50

这是头文件及其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'   命令,我无法让它工作。

     

它只是不编译头文件   和编辑gcc的库是我编辑之前的   它接受cs50库。

     

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

     

有人可以帮我吗?

3 个答案:

答案 0 :(得分:2)

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

LDLIBS = -lcs50

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

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

创建一个makefile
echo LDLIBS = -lcs50 > Makefile

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

LDLIBS=-lcs50 make target

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

env LDLIBS=-lcs50 make target

或者只是(再次,对于非csh shell)

export LDLIBS=-lcs50

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

答案 1 :(得分:0)

你有没有忘记你必须告诉gcc CS50库所在的目录?

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

答案 2 :(得分:0)

您可以使用下面的链接“ make”命令来释放和包含

make <filename_without_extension> LDLIBS="-l<lib1> -l<lib2>"

假设您有要使用make命令进行编译的server1.cpp文件,

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

输出将展开编译命令,

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