Скомпилируйте код C ++ для запуска на ESXi 3.5 - PullRequest
1 голос
/ 21 января 2010

Я пытаюсь скомпилировать простую программу на c ++ для запуска в окне консоли ESXi 3.5. Кажется, я связываюсь с неправильными библиотеками ... Где-то описана установка - какую версию G ++ и библиотеки мне нужно использовать для этого?

1 Ответ

1 голос
/ 24 января 2010

Вот как я решил проблему. Я сделал следующее для компиляции:

  1. Скомпилировано с использованием gcc под Ubuntu
  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
...