c++ - 64 位错误?

标签 c++ linux time.h

重定位被截断以适合:R_X86_64_PC32 针对“.bss”

编译时,我在 g++ 中遇到此链接器错误:

其余的代码并不重要,因为这个定义破坏了我的编译。时间函数位于 sys/time.h 中。在 64 位 RHEL 上编译。

 long ntime() {

     struct timeval tp;

     gettimeofday(&tp, (struct timezone *)0);
     return (tp.tv_sec*1000 + tp.tv_usec / 1000);
 }

告诉我为什么这是错误的?

提前致谢。

最佳答案

不确定为什么会发生链接器错误,但是是否有任何特殊原因使 struct timeval 成为静态?将其设置为本地同样快,并使您的函数线程安全,同时节省堆(好吧,bss)空间。

编辑:这就是问题所在。您的静态堆空间已超过 2GB。进行一些动态分配,或者更改内存模型。在 gcc 中,这可以通过传递 -mcmodel=medium 来完成,并且必须在所有目标文件上使用。然而,这可能会增加一些开销。

关于c++ - 64 位错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823015/

相关文章:

c++ - 来自 glade 文件的 gtkmm 构建器不起作用

java - 使用控制组管理 Java 进程

c - c中的时间戳,精度为毫秒

c++ - 两个排序数组的中位数

c++ - 使用 Enlightenment Elementary 工具包在后台打开一个窗口

mysql - 尝试启动mysql时出现pthread_create错误13(权限)

c++ - 打印随机数数组的测量时间始终显示为 0 秒

c++ - tm_wday 返回 0-6 范围之外的大整数

c++ - C++编译错误: expected initializer before ‘+=’ token

linux - 打印具有特定扩展名的每个文件的名称