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

Build C project on CentOS 7, the linker can't use -ldl , -lc

问题

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

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

构建工具和环境

我试图解决这个问题

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

编辑,我有一个解决方法

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

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

我将 makefile 修改为 LDFLAGS += -L$(LIBPATH) LDFLAGS += -l:libxxx.a -l:libyyy.a -ldl 现在可以正常使用了。

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