GCC C ++ Linker раздел на FC13 - PullRequest
       8

GCC C ++ Linker раздел на FC13

0 голосов
/ 29 августа 2010

Я пытаюсь запустить OpenGL и Glut на Eclipse Linux FC13.

Потратив на это два дня, я признаю, что нужна помощь. На FC13 Eclipse я вижу /usr/include/GL и /usr/include/SDL - так что там есть либы. Я запустил Eclipse, а затем попытался запустить на нем простую программу, как предложено здесь . Однако на этих этапах отсутствовали две вещи:

  1. Callisto не может быть установлен - ничего не было найдено из хранилище
  2. GCC C ++ Linker нигде не найден для Eclipse 3.5.2.

При попытке запустить программу я вижу эту ошибку:

Программа не существует

а иногда

Двоичный файл не найден

Если я просто запускаю «hello world», он работает, но в противном случае эти ошибки происходят каждый раз, когда я пытаюсь включить команды glut gl или sdl.

Вот выдержка из ошибки компилятора:

make all 
g++ -O2 -g -Wall -fmessage-length=0   -c -o tw.o tw.cpp
tw.cpp: In function ‘void main_loop_function()’:
g++ -o tw tw.o

Да, по-видимому, компилятор не может видеть библиотеки glu, gl, sdl и glut.

Несколько советов о том, как исправить?

Ответы [ 2 ]

2 голосов
/ 29 августа 2010

Вы должны сообщить компилятору, что ваша программа использует дополнительные библиотеки.

Использовать аргумент -l

g++ -O2 -g -Wall -fmessage-length=0  -lglut -lGL -lGLU -lX11  -c -o tw.o tw.cpp

Это должно помочь избежать неудовлетворительных ошибок ссылок.

Вы можете установить их в свойствах вашего проекта.Свойства-> c / c ++ Build-> Настройки-> Настройки инструмента-> Линкер

1 голос
/ 29 августа 2010

Проверьте, может ли компилятор найти соответствующие заголовочные файлы или нет.Если нет, вы обязательно получите ошибки компилятора.Попробуйте использовать параметр -I для установки соответствующих путей.

После того, как вы это исправите, проверьте, нет ли ошибок компоновщика (неопределенные символы / ссылки или сортировка).Если вы это сделаете: попробуйте установить пути к библиотекам с помощью параметра -L и попросите компилятор связать определенные библиотеки с помощью параметра -l.Обратите внимание, что последний ожидает что-то вроде -lmath, где на самом деле библиотека, с которой он связан, на самом деле называется libmath.so или libmath.a (в зависимости от обстоятельств).

...