在CentOS 7上构建C项目,链接器不能使用-ldl,-lc

时间:2017-06-23 10:14:36

标签: linux linker glibc

问题

我在我当地的Ubuntu机器上启动了一个C项目。在我完成第一个版本(建筑没问题)之后,我决定将代码上传到运行CentOS 7的服务器以实现更多功能。
代码和makefile两边都是一样的。
但是远程控制器上的代码显示错误如下:

/usr/bin/ld: cannot find -ldl /usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status

构建工具和环境

  • OS:centos7
  • 工具链:gcc

我试图解决这个问题

  • yum install glibc-devel

但它没有用。 我该如何解决这个问题?

编辑,我得到了一个解决方法

我发现我一周前写的makefile在LDFLAGS上有点奇怪,

LDFLAGS += -L$(LIBPATH) LDFLAGS += -static -lxxx -lyyy -ldl xxx和yyy是我需要链接的静态库名。

我将makefile修改为 LDFLAGS += -L$(LIBPATH) LDFLAGS += -l:libxxx.a -l:libyyy.a -ldl 现在它工作正常。

1 个答案:

答案 0 :(得分:1)

-static需要glibc-static个包,而不仅仅是glibc-devel。但静态链接有许多限制(特别是与dlopen结合使用),如果可能的话,你应该避免使用它。 (在Red Hat Enterprise Linux上明确不支持它。)