You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Solaris运行Ubuntu编译的Socket代理程序报错:Cannot find /lib64/ld-linux-x86-64.so.2

问题解答:Ubuntu编译的Socket程序在Solaris运行报错Cannot find /lib64/ld-linux-x86-64.so.2

问题背景

我在Ubuntu 16.04服务器上写了个简单的Socket代理程序,放到Solaris系统上运行时直接报错:

Cannot find /lib64/ld-linux-x86-64.so.2

程序用到的头文件如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <string.h> 
#include <arpa/inet.h> 
#include <sys/types.h> 
#include <sys/socket.h> 

错误原因解析

这个问题本质是跨Unix系统的二进制兼容性问题,具体细节如下:

  • /lib64/ld-linux-x86-64.so.2是Linux(基于GNU C库,即glibc)专属的64位动态链接器,它负责在程序启动时加载运行所需的动态库文件。
  • Solaris属于独立的Unix分支(由SunOS衍生而来),它使用的动态链接器完全不同——64位Solaris的默认动态链接器是/lib/64/ld.so.1,且系统底层依赖的C库是Solaris自身的libc实现,和Linux的glibc不兼容。
  • 你在Ubuntu上编译程序时,默认会生成依赖Linux glibc的可执行文件,这种二进制文件无法直接在Solaris上运行,因为Solaris既没有Linux的动态链接器,也不支持glibc的库调用逻辑。

哪怕你的代码用的都是标准POSIX头文件(就像你列出的这些),编译后的二进制依然和编译环境的系统库强绑定,Linux和Solaris属于差异较大的Unix系统,直接跨系统运行二进制文件必然会出现这类兼容性问题。

内容的提问来源于stack exchange,提问作者김진영

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:38:44