Вопрос
перемещение урезано до соответствия: 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 и должно использоваться во всех объектных файлах. Однако это может несколько увеличить накладные расходы.