当前位置: 首页 > 知识库问答 >
问题:

/usr/bin/ld:使用makefile编译时找不到-lc

丁正阳
2023-03-14

上下文优先:我有一个头(event.h)、一个名为event.c的程序和主程序main.c。这个程序将被编译,首先生成一个目标程序(event.o),然后在一个单独的文件夹中生成一个静态库(libevent.a),然后生成可执行程序work1.exe

为此,我创建了这个Makefile:

work1 : main.c libevent.a
    gcc -static main.c -L./lib -levent -o work1 -Wall

event.o: event.c
gcc -c event.c -Wall

libevent.a: event.o
ar rcs lib/libevento.a event.o 

clean: 
rm work1 *.o

执行makefile的结果会导致以下错误:

 $ make
 gcc -c event.c -Wall
 ar rcs lib/libevent.a event.o 
 gcc -static main.c -L./lib -levent -o work1 -Wall
 /usr/bin/ld: cannot find -lc
 collect2: ld returned 1 exit status
 make: *** [work1] Error 1

共有1个答案

麻宜春
2023-03-14

具体错误是下面一行:

/usr/bin/ld: cannot find -lc

链接器找不到静态链接库所需的C库。您可以通过调用locate libc.a来尝试查看系统中是否已经存在libc.a。如果返回,则添加一个适当的库标志,指向包含libc.a的目录。

如果没有安装libc.a,不幸的是,如果要静态编译库,则需要安装库。既然您声明您使用的是CentOS,那么您应该能够通过YUM install glibc-static来实现这一点。

 类似资料:
  • 问题内容: 我正在尝试编译我的程序,它返回此错误: 在我的makefile文件中,我使用命令并链接到我的库,这是到我的库的另一个目录的符号链接。 是否可以添加选项以使其正常工作? 问题答案: 如果您的图书馆名称是say 并且位于路径上,请说: 然后将其链接到您的程序:

  • 问题内容: 我正在尝试使用Python 2.7安装MySQLdb。我收到的错误如下所示: 显然,它找不到Python 2.7。展望我看到: 该符号是什么意思?谁能建议对此错误采取补救措施? 问题答案: 它找不到Python库,而不是可执行文件。运行以查看Python库的位置,然后将其添加到库路径(例如,如果位于中,则要调用)。 该符号意味着该文件是一个符号链接; 表示它是可执行文件(这些文件由产生

  • 因此,我试图使用make-f Makefile编译一个程序,但我得到了以下错误/usr/bin/ld:not find-lgd 生成文件: 替换(libgd.a libgd.la libgd.so libgd.so.2 libgd.so.2.0.0)后,我收到以下错误:

  • 我试图编译我的程序,它返回这个错误: 在我的makefile中,我使用命令并链接到我的库,这是一个符号链接到我位于其他目录上的库。 是否有一个选项添加,使其工作,请?

  • 我正在按照帮助中的coder教程进行操作。使用时,出现如下错误: /usr/bin/ld:找不到-lstdc Collect2:ld返回1退出状态 但是在 中都有库

  • 我在/usr/local/lib中有libcommon.so,我在程序中链接了这个库。 gcc -o测试test _ Prog . c-L/usr/local/lib-llib common . so 我也试过这个 gcc -o test test_prog.c -L/usr/local/lib -llibcommon 是给予 /usr/bin/ld: 找不到 -llibcommon.so 收集