通過獨立的Android NDK r10e Toolchain(使用--toolchain = x86-clang3.6開關構建)獲得了這種奇怪的行爲。交叉編譯的環境變量已設置運行makefile之前,SYSROOT指向Android工具鏈位置,CXX等於i686-linux-android-clang ++。基本上,我有一堆我想編譯爲Android可執行文件的cpp文件。可悲的是,鏗鏘聲++繼續生產.so共享庫(使用readelf進行檢查 - 它確實是共享對象)。有沒有我已經忘記的編譯器/鏈接器的特殊開關?Readelf報告程序是一個共享庫,而不是可執行文件
生成文件:(main.cpp中包含的主要功能)
CFLAGS=-c -Wall -std=c++11 -Wextra --sysroot=${SYSROOT} -march=i686
LDFLAGS=-lc -lc++_shared -L${SYSROOT}/usr/lib
SOURCES=main.cpp File1.cpp File2.cpp File3.cpp File4.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=test
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) ${CXX} $(LDFLAGS) $(OBJECTS) -o [email protected]
.cpp.o: ${CXX} $(CFLAGS) $< -o [email protected]
clean: rm *.o test
你確定你已經在這裏複製你的makefile嗎?對我來說,看起來這個makefile很可能會讓你不知道如何構建錯誤。在先決條件/配方之前應該有一個換行符/ TAB,否則它們應該用';'分開。 – MadScientist
@MadScientist這是正確的,TAB在這裏不見了,可能在粘貼時將它剪掉。 – cleaweag
在StackOverflow上缺少TAB很常見。缺少換行符不是那麼多... :) – MadScientist