Кросс-платформенная проблема Qt: прекрасно компилируется в Windows, ошибка компоновщика в Linux - PullRequest
1 голос
/ 05 августа 2009

У меня есть некоторый код Qt под названием "GUI". Через Qt Creator я могу скомпилировать (используя GCC) его без каких-либо жалоб на Windows. Однако, когда я пытаюсь скомпилировать его (снова используя GCC через Qt Creator) в Linux, я получаю ошибку компоновщика:

collect2: ld вернул 1 статус выхода.

Единственной не-Qt библиотекой, которую я использую, является векторная библиотека STL.

Ответы [ 5 ]

1 голос
/ 05 ноября 2009

Данное сообщение об ошибке просто означает, что при попытке связать все ваши объектные файлы вместе в исполняемый файл что-то пошло не так; если вы переключитесь на вкладку Compile Output в Qt Creator, вы сможете отследить сообщение об ошибке фактическое от самого компоновщика. Это может быть так же просто, как невозможность записи в место, куда должен отправляться исполняемый файл (это случалось, когда я пытался пересобрать приложение, которое у меня все еще работает), или это могло быть что-то более серьезное. Например, если вы начали добавлять класс, в котором еще не реализованы его методы.

0 голосов
/ 19 ноября 2009

Удаляя .moc / .obj, вы можете попробовать снова.

0 голосов
/ 16 августа 2009

Убедитесь, что ваша среда Qt настроена и у вас есть все зависимости библиотеки / пакета.

Затем запустите qmake, а затем make. Если qmake работает, у вас все будет в порядке.

В некоторых дистрибутивах Linux вам необходимо специально установить библиотеки (пакеты). Некоторые пакеты позволят вам запустить программу, например плагины MySQL. Если вы хотите скомпилировать, вам также понадобятся пакеты для разработки.

Например, в Ubuntu вам может потребоваться выполнить:

sudo apt-get install build-essential
sudo apt-get install libqt4-sql-mysql
0 голосов
/ 02 октября 2009

Ошибка: "collect2: ld вернул 1 состояние выхода", как правило, возвращается, когда moc не запускается на файлах, на которых он должен работать [в частности, на любых файлах, которые определяют Q_OBJECT]. Проверьте, правильно ли работает ваш moc.

Также в Qt Creator есть вкладка «Информация о сборке». Пройдите по нему и проверьте дополнительную информацию об этой ошибке.

0 голосов
/ 12 августа 2009

Обычно есть три области, где это ломается:

  • Проверьте файл проекта Qt и посмотрите, нужно ли добавить LIBS += library/path/etc
  • У вас не установлена ​​библиотека
  • Если он установлен, измените LD_LIBRARY_PATH=/missing/lib/path:$LD_LIBRARY_PATH ./binary на лету
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...