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

发布于 2024-08-18 18:36:48 字数 96 浏览 9 评论 0原文

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

I'm trying to compile a simple c++ program to run inside ESXi 3.5 console window. It seems I'm linking with wrong libraries... Is there a setup described somewhere - which version of G++ and libraries do I have to be using in order to do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏日落 2024-08-25 18:36:48

这是我解决问题的方法。我执行了以下编译操作:

  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

Here's how I resolved the issue. I did following to compile:

  1. Compiled using gcc under ubuntu
  2. Ran ldd on executable
  3. Copied all libraries that showed up as dependencies to subfolder ESXi-3.5-lib. In my case they were:

    ld-linux.so.2
    libc.so.6
    libgcc_s.so.1
    libm.so.6
    libstdc++.so.5
    
  4. Added following switches to gcc:

    • -nodefaultlibs (to not attempt to link with default libs)
    • -lc (prevented link error in some crt library)
    • -fno-stack-protector (prevented another error, some other function was missing)

Following was my final build command:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文