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

Ubuntu16.04下MonoDevelop运行SQL示例遇libodbc.so缺失异常求助

解决Ubuntu 16.04 LTS + MonoDevelop下的libodbc.so找不到问题

我之前在Ubuntu 16.04上用Mono处理ODBC数据库连接时,也碰到过完全一样的System.DllNotFoundException: libodbc.so错误!试了软链接和重装unixODBC都没用,后来才发现是架构匹配和库路径的问题,分享几个亲测有效的解决步骤:

  • 第一步:确认系统与Mono的架构匹配
    首先搞清楚你的系统是32位还是64位,以及Mono的运行架构:

    • 终端运行uname -m,输出x86_64是64位系统,i686是32位
    • 再运行mono --version,看输出里的Architecture字段,比如amd64或x86
      如果系统是64位但Mono是32位,那你需要安装32位的ODBC库,否则会出现找不到的情况。
  • 第二步:完整安装unixODBC依赖包
    不要只装基础的unixODBC,把开发包和对应架构的库都装上:

    • 64位系统直接执行:
      sudo apt-get update
      sudo apt-get install unixodbc unixodbc-dev
      
    • 如果是64位系统用32位Mono,需要额外安装32位库:
      sudo apt-get install libodbc1:i386 unixodbc:i386 unixodbc-dev:i386
      
  • 第三步:创建正确的软链接
    很多时候问题出在Mono找库的路径不对,先找到系统里实际的libodbc文件位置:

    find /usr -name libodbc.so*
    

    通常64位系统下路径是/usr/lib/x86_64-linux-gnu/libodbc.so.2(这是实际的库文件,带版本号),而Mono会去/usr/lib/下找libodbc.so,所以创建软链接:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libodbc.so.2 /usr/lib/libodbc.so
    

    如果是32位系统,实际路径可能是/usr/lib/i386-linux-gnu/libodbc.so.2,对应链接到/usr/lib/libodbc.so即可。

  • 第四步:配置库加载路径
    有时候Mono还是找不到库,需要手动指定LD_LIBRARY_PATH:
    在终端执行:

    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
    

    如果你想永久生效,可以把这句话添加到~/.bashrc文件末尾,然后运行source ~/.bashrc刷新配置。

做完这些步骤后,重启MonoDevelop再运行你的C#程序,应该就能解决这个错误了!

内容的提问来源于stack exchange,提问作者Hugh Connell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:50