Не могу скомпилировать общую библиотеку в Eclipse - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать разделяемую библиотеку на C ++, используя eclipse IDE на Linux.Но я получаю эту ошибку и не могу найти проблему:

23:42:12 **** Incremental Build of configuration Release for project GE ****
make all 
Building file: ../GE/Application.cpp
Invoking: GCC C++ Compiler
std=c++1y -DGE_PLATFORM_LINUX -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"GE/Application.d" -MT"GE/Application.o" -o "GE/Application.o" "../GE/Application.cpp"
/bin/sh: 1: -DGE_PLATFORM_LINUX: not found
make: [GE/subdir.mk:20: GE/Application.o] Error 127 (ignored)
Finished building: ../GE/Application.cpp

Building target: libGE.so
Invoking: GCC C++ Linker
g++ -shared -o "libGE.so"  ./GE/Application.o   
g++: error: ./GE/Application.o: No such file or directory
g++: fatal error: no input files
compilation terminated.
make: *** [makefile:47: libGE.so] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

23:42:12 Build Failed. 1 errors, 0 warnings. (took 317ms)

Это моя конфигурация: Preprocessor Settings

Dialect

Препроцессор GE_PLATFORM_LINUX требуется библиотекой.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019
std=c++1y -DGE_PLATFORM_LINUX -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"GE/Application.d" -MT"GE/Application.o" -o "GE/Application.o" "../GE/Application.cpp"

В этой строке отсутствует команда компилятора C ++, в результате чего оболочка пытается интерпретировать -DGE_PLATFORM_LINUX как команду для выполнения.Это приводит к появлению ошибки в следующей строке:

/bin/sh: 1: -DGE_PLATFORM_LINUX: not found

Таким образом, объектный файл не создан и отсутствует во время ссылки.Почему пропущенная команда принята Eclipse, и эта ошибка игнорируется, это разные вопросы.

Решение: Убедитесь, что вы установили правильную команду компилятора;вызов компоновщика показывает, как он должен выглядеть:

g++ -shared -o "libGE.so"  ./GE/Application.o   

С https://stackoverflow.com/a/38220551/5794048: enter image description here

0 голосов
/ 14 марта 2019

Вся ваша команда компиляции испорчена.

std = c ++ 1y -DGE_PLATFORM_LINUX ...

/ bin / sh: 1: -DGE_PLATFORM_LINUX: не найдено make: [GE / subdir.mk: 20: GE / Application.o] Ошибка 127 (игнорируется)

Это означает, что фактический компилятор (g ++) не был вызван, и это только следующие аргументыэто, которое затем рассматривается оболочкой как команда, которой, очевидно, не существует.Проверьте файл make, чтобы увидеть, что там есть.

...