问题
我在本地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/