网站整站下载,wordpress分享朋友圈,ip做网站域名,跨越物流公司官网一、生成可执行文件
1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件
// testadd.c
#include stdio.h
int main() {int a 1;int b 2;int sum a b;printf(sum %d\n, sum);return 0;
}// Makefie
GXX g
CC gcc…一、生成可执行文件
1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件
// testadd.c
#include stdio.h
int main() {int a 1;int b 2;int sum a b;printf(sum %d\n, sum);return 0;
}// Makefie
GXX g
CC gcc
TARGET testadd
OBJS testadd.otestadd:${OBJS}${CC } ${OBJS} -o ${TARGET} # 空格处为一个Tap
testadd.o:testadd.c
clean:rm -r ${OBJS} ${TARGET} # 空格处为一个Tap2 .cpp文件
// testadd.cpp#include stdio.h
//#include iostream
int main() {int a 1;int b 2;int sum a b;printf(c sum %d\n, sum);//std::cout c sum sumstd::endl;return 0;
}// Makefile
GXX g
CC gcc
TARGET testadd
OBJS testadd.otestadd:${OBJS}${GXX} ${OBJS} -o ${TARGET} # 空格处为一个Tap
testadd.o:testadd.cpp
clean:rm -r ${OBJS} ${TARGET} # 空格处为一个Tap经过以上测试总结如下 以.cpp为后缀的文件为c代码。代码最好使用C语言。也可以使用c语言。 a 代码使用c语言编译时必须要用g不能使用gcc。 b 代码使用c语言编译时可以使用gcc ,也可以使用g。
以.c为后缀的文件为c代码代码最好使用c语言。 a 代码使用c语言编译时可以使用g,也可以使用gcc. b 代码使用c语言编译时不能使用gcc,也不能使用g. 既cpp文件可以使用c语言c语言编写。c文件只能使用c语言编写。
2、 两个源文件以.cpp文件为例
// testadd.cpp
#include add.hpp
int main() {int sum add(5,8);std::cout c sum sumstd::endl;return 0;
}// add.cpp
#include add.hpp
int add(int a, int b) {std::couta astd::endl;std::coutb bstd::endl;return a b;
}// add.hpp
#include iostream
int add(int a, int b);// Makefile
GXX g
CC gcc
TARGET testadd
TARGET_SOURCE testadd.cpp \add.cpp${TARGET}:${TARGET_SOURCE}${GXX} -o ${TARGET} ${TARGET_SOURCE}
clean:rm -r *.o ${TARGET}编译指令make。生成testadd
3、编译成动态库 源代码与实例2相同Makefile文档如下
GXX g
CC gcc
TARGET libadd.so
TARGET_SOURCE add.cpp ${TARGET}:${TARGET_SOURCE}${GXX} -shared -fPIC ${TARGET_SOURCE} -o ${TARGET}
clean:rm -r *.o ${TARGET}编译指令make。生成add.so
4、使用动态库 源码与上述源码相同。Makefile文件。
// Makefile
GXX g
CC gcc
TARGET testadd
TARGET_SOURCE testadd.cpp
LIBS /home/lily/cproject/testMakeFile/libs # so库所在路径
${TARGET}:${TARGET_SOURCE}${GXX} -o ${TARGET} ${TARGET_SOURCE} -L${LIBS} -ladd
clean:rm -r *.o ${TARGET}编译指令make 。生成testadd. 注意在./testadd 之前需要添加 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/lily/cproject/testMakeFile/libs否则报错找到库文件。 5、头文件放到include文件夹下其他不动。Makefile # Makefile
# Compile as C11
#add_compile_options(-stdc11)# 指定编译器
CXX g
CC gcc#指定编译选项
CFLAGS -Wall -g
TARGET testadd
Src:$(wildcard *.cpp)
Objs:$(patsubst %.cpp,%.o, $(Src))
#指定头文件位置
INCLUDES -I ./include
#指定库文件
LIBS-L ./libs -ladd$(TARGET):$(Objs)echo $(Objs)mkdir -p output$(CXX) $(Objs) $(LIBS) -o output/$(TARGET)%.o:%.cpp$(CXX) $(INCLUDES) $(CFLAGS) -c $ -o $clean:rm $(Objs)