Вот как я решил проблему. Я сделал следующее для компиляции:
- Скомпилировано с использованием gcc под Ubuntu
- Ран ldd на исполняемом файле
Скопировал все библиотеки, которые были показаны как зависимости, в подпапку ESXi-3.5-lib. В моем случае они были:
ld-linux.so.2
libc.so.6
libgcc_s.so.1
libm.so.6
libstdc++.so.5
Добавлены следующие ключи в 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