首页 > 64位linux 编译c程序链接到i386-linux-gnu

64位linux 编译c程序链接到i386-linux-gnu

在自己的64位的linux上写的C程序,编译运行都很正常,生成的.d文件里面链接的库也是链接到x86_64-linux-gnu下的。程序拷贝到64位服务器上去运行也没有问题,但是如果重新make的话就会出错,.d文件里面链接的库都是链接到 i386-linux-gnu 下的,然后提示找不到这些头文件。已经检查了服务器上 make gcc g++ 的版本号,都是和自己笔记本上一致的。


这个问题涉及到32位,64位机器以及GCC在这两种平台上的具体用法

如果你的机器是Intel CPU,安装的是Linux 64位系统,自然编译时链接库也会自动选择64位库,这个信息可以从你输入命令gcc -v, 从Target: x86_64-xxxxxxx和Configured With:.......等信息可以确认。(光是看版本号是不行的)

程序在你的笔记本上编译和运行正常, 你把程序copy到服务器上运行也正常,说明该程序所依赖的64位库文件在服务器上也能找到(通常在/lib64/....)

但是如果在服务器上进行编译,就会出错,显示错误是头文件找不到, 库文件链接错误(去找32位库),这说明可能服务器上的gcc默认配置可能不合适,它会自己默认去链接32位库,请检查你服务器上的gcc -v。

相要修改这个问题,你可以选择补全32位环境,包括对应库文件, 然后在服务器上以32位环境运行; 或者是在服务器上gcc加入选项-m64。

【热门文章】
【热门文章】