发信人: lopicoidcn(lopicoidcn), 信区: GNULinux
标 题: Compile 32 bit program on 64 bit machine
发信站: 饮水思源 (2014年05月01日00:24:58 星期四)

c/c++ 程序

我在 32 位 ubuntu 系统上写了个处理网络流数据包的程序,放在 64 位 ubuntu 系统下运
行(这台机器的配置比较好).

我把源码拷过来, 编译失败, 才知道 64 位系统的 long 是 8 字节, 而 32 位系统的是
4 字节, OK, 我就把 long 都换成了 int.

再编译, 又报错, 这次是 strftime, localtime 这些函数报错了, 还是因为参数有 long
的问题(time_val 转到 string 时需要这些函数).

google 了很久无果, 这个问题倒是有人问过, 但都没有完美的解答. 我倒是能够手工实现
time_val 转到 string, 但我的源码后面可能还会有这种有冲突的库函数, 所以, 现在不
知道该怎么办了, 大家有没有遇到过相同的问题, 是否有完美解法? 或者即便是编译出了
32 位的程序, 在 64 位的机器上跑也没有优势?
--

※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 219.228.125.83]