我在我当地的Ubuntu机器上启动了一个C项目。在我完成第一个版本(建筑没问题)之后,我决定将代码上传到运行CentOS 7的服务器以实现更多功能。
代码和makefile两边都是一样的。
但是远程控制器上的代码显示错误如下:
/usr/bin/ld: cannot find -ldl
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
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
现在它工作正常。
答案 0 :(得分:1)
-static
需要glibc-static
个包,而不仅仅是glibc-devel
。但静态链接有许多限制(特别是与dlopen
结合使用),如果可能的话,你应该避免使用它。 (在Red Hat Enterprise Linux上明确不支持它。)