问题

我在本地Ubuntu计算机上启动了一个C项目。完成第一个版本(建筑物可以)后,我决定将代码上传到运行CentOS 7的服务器上以实现更多功能。
双方的代码和makefile相同。
但是在远程平台上构建的代码显示以下错误:

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

建筑工具和环境


操作系统: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
现在工作正常。

最佳答案

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

关于linux - 在CentOS 7上构建C项目,链接器不能使用-ldl,-lc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44718880/

10-11 21:25