Вопрос

перемещение урезано до соответствия: 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).

Редактировать: вот проблема. Вы превысили 2 ГБ в пространстве статической кучи. Сделайте часть этого динамически распределенной или измените модель памяти. В gcc это может быть сделано передачей -mcmodel = medium и должно использоваться во всех объектных файлах. Однако это может несколько увеличить накладные расходы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top