编译C ++代码以在ESXi 3.5上运行

时间:2010-01-21 01:01:53

标签: g++ esxi

我正在尝试编译一个简单的c ++程序,以便在ESXi 3.5控制台窗口内运行。看来我正在连接错误的库...是否有某处描述的设置 - 我必须使用哪个版本的G ++和库才能这样做?

1 个答案:

答案 0 :(得分:1)

以下是我解决问题的方法。我做了以下编译:

  1. 在ubuntu下使用gcc编译
  2. Ran ldd on executable
  3. 将显示为依赖关系的所有库复制到子文件夹ESXi-3.5-lib。就我而言,他们是:

    ld-linux.so.2
    libc.so.6
    libgcc_s.so.1
    libm.so.6
    libstdc++.so.5
    
  4. 添加了以下切换到gcc:

    • -nodefaultlibs(不尝试链接默认库)
    • -lc(阻止某些crt库中的链接错误)
    • -fno-stack-protector(防止了其他错误,其他一些功能丢失)
  5. 以下是我的最终构建命令:

    g++ file1.cpp file2.cpp file3.cpp -o output-biinary-file-name \
        ESXi-3.5-lib/ld-linux.so.2 ESXi-3.5-lib/libc.so.6 ESXi-3.5-lib/libgcc_s.so.1\
        ESXi-3.5-lib/libm.so.6 ESXi-3.5-lib/libstdc++.so.5  \
        -nodefaultlibs -lc -m32 -fno-stack-protector