下午好。
我正在尝试在我的64位环境下构建32位fcgi ++二进制文件。我按以下方式配置了FCGI ++:
CC="gcc -m32" ./configure
输入'make'后,我会看到一些构建过程以及最后的错误(片段在这里):
gcc -m32 -shared fcgio.lo -Wl, - rpath -Wl,/ home / eotovchits / Downloads / fcgi / fcgi-2.4.1-SNAP-0311112127 / libfcgi / .libs -Wl, - rpath - Wl,/ usr / local / lib /home/eotovchits/Downloads/fcgi/fcgi-2.4.1-SNAP-0311112127/libfcgi/.libs/libfcgi.so -Wl,-soname -Wl,libfcgi ++。so.0 -o的.libs / libfcgi ++。so.0.0.0 / usr / bin / ld:i386:x86-64输入文件架构
fcgio.lo' is incompatible with i386 output fcgio.lo: In function
__ static_initialization_and_destruction_0': /usr/include/c++/4.8/iostream:74:未定义引用std::ios_base::Init::Init()' /usr/include/c++/4.8/iostream:74: undefined reference to
std :: ios_base :: Init :: ~Init()'
......................很多类似的线.................... .......
fcgio.lo:在函数
~basic_ios': /usr/include/c++/4.8/bits/basic_ios.h:276: undefined reference to
vtable for std :: basic_ios>' /usr/include/c++/4.8/bits/basic_ios.h:276:std :: basic_ios> {std::ios_base::~ios_base()' /usr/include/c++/4.8/bits/basic_ios.h:276: undefined reference to
vtable的未定义引用 /usr/include/c++/4.8/bits/basic_ios.h:276:未定义引用std::ios_base::~ios_base()' fcgio.lo: In function
fcgi_istream :: ~fcgi_istream()': /home/eotovchits/Downloads/fcgi/fcgi-2.4.1-SNAP-0311112127/libfcgi/../include/fcgio.h:120:未定义引用`operator delete(void *)' / usr / bin / ld:fcgio.lo:文件类ELFCLASS64与ELFCLASS32不兼容 / usr / bin / ld:最终链接失败:文件格式错误 collect2:错误:ld返回1退出状态
我假设我需要一些额外的32位构建环境来制作32位二进制文件(沿着w /所有需要的第三方库,.a-s和.so-s)
您知道我如何在本地64位环境中设置此类环境并为32位环境构建我的fcgi ++二进制文件?
谢谢。
答案 0 :(得分:1)
在Ubuntu上,您可以在x64上安装i386库,方法是在末尾添加“:i386”哦你要安装的软件包的名称(假设你使用apt-get来安装lib)。 / p>
以下是如何操作的示例:
这里是如何安装32位编译器(以及STL和其他东西):
http://en.kioskea.net/faq/1137-compiling-testing-in-32-bit-on-ubuntu-x86-64