2016-02-28 70 views
-2

我目前正在回到C++。我一直在遇到構建我的應用程序的問題。 當我運行make輸出變爲:我的C++應用程序無法鏈接,我不知道爲什麼

g++ -c -Wall -I headers/ -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL2 -lGL -lSDL2 -lSDL2main Debug.cpp -o Debug.o 
g++ -c -Wall -I headers/ -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL2 -lGL -lSDL2 -lSDL2main GameLoop.cpp -o GameLoop.o 
g++ -c -Wall -I headers/ -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL2 -lGL -lSDL2 -lSDL2main Main.cpp -o Main.o 
g++ -c -Wall -I headers/ -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL2 -lGL -lSDL2 -lSDL2main -o GAME Debug.o GameLoop.o Main.o 
g++: warning: Debug.o: linker input file unused because linking not done 
g++: warning: GameLoop.o: linker input file unused because linking not done 
g++: warning: Main.o: linker input file unused because linking not done 

我的項目

  • 的Makefile
  • Main.cpp的文件結構
  • GameLoop.cpp
  • Debug.cpp
  • 頭文件/
    • Main.h
    • GameLoop.h
    • Debug.h

的Makefile:

CC := g++ 
TARGET := GAME 
SOURCES := $(wildcard *.cpp) 
OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES)) 
DEPS := $(wildcard headers/*.h) 
CPPFLAGS := -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 $(shell sdl2-config --libs) -lGL -lSDL2 -lSDL2main 
CFLAGS := -c -Wall -I headers/ 

##$(info OBJECTS= $(OBJECTS) :: SOURCES= $(SOURCES) :: EXECUTABLEOUT= $(TARGET)) 

default: $(TARGET) 

%.o: %.cpp $(DEPS) 
     $(CC) $(CFLAGS) $(CPPFLAGS) $< -c -o [email protected] 


$(TARGET): $(OBJECTS) 
     $(CC) $(CFLAGS) $(CPPFLAGS) -o [email protected] $^ 
RAW Paste Data 

CC := g++ 
TARGET := GAME 
SOURCES := $(wildcard *.cpp) 
OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES)) 
DEPS := $(wildcard headers/*.h) 
CPPFLAGS := -I ../libs/inc/SDL2 -L ../libs/lib/SDL2 $(shell sdl2-config --libs) -lGL -lSDL2 -lSDL2main 
CFLAGS := -c -Wall -I headers/ 

##$(info OBJECTS= $(OBJECTS) :: SOURCES= $(SOURCES) :: EXECUTABLEOUT= $(TARGET)) 

default: $(TARGET) 

%.o: %.cpp $(DEPS) 
     $(CC) $(CFLAGS) $(CPPFLAGS) $< -c -o [email protected] 


$(TARGET): $(OBJECTS) 
     $(CC) $(CFLAGS) $(CPPFLAGS) -o [email protected] $^ 

目前一直在尋找在這個頁面上超過60個答案(及其他)沒有運氣。 :/

回答

2

您的所有g++調用都使用-c選項。從GCC的幫助:

-c    Compile and assemble, but do not link 

你最後g++通話不應該有-c選項。你有它的原因是因爲你已經指定它爲您的所有CFLAGS

CFLAGS := -c -Wall -I headers/ 

刪除它從那裏應該解決您的問題。

+0

我的天,我有時候很愚蠢。謝謝xD – Member1221

1

從製作可執行文件的最後一行刪除-c標誌。

從Man頁面,G ++:

-c    編譯或彙編源文件,但不鏈接。鏈接階段根本沒有完成。最終的輸出是以每個源文件的目標文件的形式。

相關問題