【问题标题】:Compile C++ code to run on ESXi 3.5编译 C++ 代码以在 ESXi 3.5 上运行
【发布时间】:2011-01-07 13:15:25
【问题描述】:

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

【问题讨论】:

    标签: g++ esxi


    【解决方案1】:

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

    1. ubuntu下使用gcc编译
    2. 在可执行文件上运行 ldd
    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(防止另一个错误,缺少一些其他功能)

    以下是我的最终构建命令:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多