我正在尝试使用Linux上的eclipse IDE在C ++中创建一个共享库。但我收到此错误,我找不到问题:
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)
库需要预处理器GE_PLATFORM_LINUX。
你的编译命令都搞砸了。
std = c ++ 1y -DGE_PLATFORM_LINUX ...
/ bin / sh:1:-DGE_PLATFORM_LINUX:not found make:[GE / subdir.mk:20:GE/Application.o]错误127(忽略)
这意味着实际的编译器(g ++)没有被调用,它只是跟随它的参数,而不是shell作为命令来处理,这显然不存在。检查您的make文件,看看有什么。
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 ++编译器命令,这导致shell尝试将-DGE_PLATFORM_LINUX
解释为要执行的命令。这导致错误出现在下一行:
/bin/sh: 1: -DGE_PLATFORM_LINUX: not found
因此,目标文件未构建,并且在链接时丢失。为什么Eclipse接受缺少的命令,并忽略该错误,这是不同的问题。
解决方案:确保已设置正确的编译器命令;链接器调用显示它应该是什么样子:
g++ -shared -o "libGE.so" ./GE/Application.o