Ошибка «слишком короткий файл» в g++ при компиляции файла .oC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка «слишком короткий файл» в g++ при компиляции файла .o

Сообщение Anonymous »

Вот ошибка:

Код: Выделить всё

g++  -lpthread -pthread -std=c++11 -g -D_GNU_SOURCE  src/QuoridorMain.o src/Tree.o src/utility.o src/Game.o src/storage.o -o qbot
/usr/bin/ld: error: src/QuoridorMain.o: file too short
collect2: error: ld returned 1 exit status
make: *** [Makefile:12: qbot] Error 1
А вот Makefile, который я использую.

Код: Выделить всё

# Makefile for qbot

# Compiler options
CXX = g++ # use g++ compiler
CXXFLAGS = -lpthread -pthread -std=c++11 -g -D_GNU_SOURCE -no-pie# openmp and pthread, g for debugging

.SUFFIXES: .o .cpp
OFILES = src/QuoridorMain.o src/Tree.o src/utility.o src/Game.o src/storage.o

qbot: $(OFILES)
$(CXX) $(CXXFLAGS) $(OFILES) -o qbot
@echo Produced qbot executable

clean:
$(RM) *.o *~

# Dependency rules for *.o files
src/Tree.o: src/Tree.cpp src/Tree.h src/utility.cpp src/Global.h
src/QuoridorMain.o: src/QuoridorMain.cpp src/Tree.cpp src/Game.cpp src/Global.h
src/utility.o: src/utility.h src/utility.cpp src/Global.h
src/Game.o: src/Game.cpp src/Game.h src/Global.h
src/storage.o: src/storage.cpp src/storage.h
Я не очень хорошо разбираюсь в том, что необходимо, а что нет в make-файле, и ошибки компоновщика часто становятся моим недостатком. При этом раньше все компилировалось нормально, и единственное, что, по моему мнению, изменилось между идеальной компиляцией и этой ошибкой, - это добавление некоторых операторов std::cout. Так что я совершенно не понимаю, что происходит.
Возможно, это важно: я компилирую на новом компьютере по сравнению с тем, на котором я разработал большую часть кода, и ранее получал ошибку, связанную с ld, которую я исправил, добавив флаг -no-pie. Однако для меня это имело смысл, и даже удаление флага -no-pie теперь приводит к той же ошибке компиляции. Кроме того: вполне вероятно, что во время выполнения моего кода есть серьезные ошибки. Раньше я получал ошибки сегментации или ее отсутствие во время выполнения в зависимости от того, закомментированы или нет определенные операторы std::cout. Мне сказали, что это признак серьезных проблем где-то еще, но если бы вы могли уточнить, что это за проблемы часто и как они теперь будут влиять на компиляцию, а не только на время выполнения, я был бы очень признателен. Спасибо!
РЕДАКТИРОВАТЬ: По предложению комментаторов я удалил все файлы .cpp из правил зависимостей .o. Я все еще получаю ту же ошибку после очистки. Я подозреваю, что мне придется сделать больше важных вещей, чтобы это действительно заработало, а не просто удалять файлы .cpp, но, похоже, это не является прямой проблемой.

Подробнее здесь: https://stackoverflow.com/questions/648 ... ing-o-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»