尝试在64位Linux平台上编译32位库时发生sys / socket.h致命错误

时间:2016-03-03 06:58:36

标签: c linux

我使用Ubuntu 15.10 64位。安装了gcc-5-multilib,g ++ - 5-multilib,libc6-i386,内核头文件和所有构建工具链。当我尝试编译32位库(对于linux)时:

gcc -m32 -fPIC -shared -Wl,-soname,mylib.so -o mylib.so mylib.c

我收到错误:

/usr/include/bits/socket.h:345:24: fatal error: asm/socket.h: No such file or directory

对于32位linux,如何在64位上使用#include <sys/socket.h>编译代码?

1 个答案:

答案 0 :(得分:2)

您需要提供asm的路径。只需检查路径和链接,就像这样。根据系统路径可能会有所不同。大部分时间下载gcc-multilib都可以解决此问题。

$cd /usr/include
$sudo ln -s asm-generic/ asm

OR

$cd /usr/include
$sudo ln -s x86_64-linux-gnu/asm asm