在Ubuntu 13中在64位环境中构建32位FCGI ++二进制文件

时间:2013-12-04 08:21:15

标签: c++ c linux gcc fastcgi

下午好。

我正在尝试在我的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 ++二进制文件?

谢谢。

1 个答案:

答案 0 :(得分:1)

在Ubuntu上,您可以在x64上安装i386库,方法是在末尾添加“:i386”哦你要安装的软件包的名称(假设你使用apt-get来安装lib)。 / p>

以下是如何操作的示例:

https://askubuntu.com/questions/60751/is-it-possible-to-have-32-bit-libraries-installed-on-a-64-bit-system

这里是如何安装32位编译器(以及STL和其他东西):

http://en.kioskea.net/faq/1137-compiling-testing-in-32-bit-on-ubuntu-x86-64