代码之家  ›  专栏  ›  技术社区  ›  galets

编译运行在ESXI 3.5上的C++代码

  •  1
  • galets  · 技术社区  · 15 年前

    1 回复  |  直到 15 年前
        1
  •  1
  •   galets    15 年前

    下面是我如何解决这个问题的。我做了以下工作来编译:

    1. 在可执行文件上运行ldd
    2. 已将显示为依赖项的所有库复制到子文件夹ESXi-3.5-lib。就我而言,它们是:

      ld-linux.so.2
      libc.so.6
      libgcc_s.so.1
      libm.so.6
      libstdc++.so.5
      
    3. 在gcc中添加了以下开关:

      • -lc(在某些crt库中防止链接错误)
      • -fno堆栈保护器(防止了另一个错误,某些其他功能丢失)

    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