无法在Eclipse中编译共享库

问题描述 投票:0回答:2

我正在尝试使用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)

这是我的配置:Preprocessor Settings

Dialect

库需要预处理器GE_PLATFORM_LINUX。

c++ eclipse shared-libraries lib
2个回答
0
投票

你的编译命令都搞砸了。

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文件,看看有什么。


0
投票
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   

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

© www.soinside.com 2019 - 2024. All rights reserved.