当前位置:首页 > yabo168亚博娱乐 > 其他 > 正文

linux学习?建立静态库,动态库,写简单的makefile

建立静态库?建立四个文件?bin(可执行文件),lib(库),include(头文件),src(放源文件)?这里的起的库明为add?在src文件中执行?1)gcc?-c?add.c?//编译add.c建立静态库?建立四个文件?bin(可执行文件),lib(库),include(头文件),src(放源文件)?这里的起的库明为add?在src文件中执行?1)gcc?-c?add.c?//编译add.c源文件生成add.o目标文件?2)ar?crsv?../lib/?libadd.a?add.o?//对目标文件*.o进行归档,生成lib*.a,?把这个生成文件放在lib里?3)gcc?-o?main?main.c?-L(大些的爱偶,放库的路径)../lib???–l(小写的爱偶,库名为add)?add?–I(大写的i)?../include(放头文件)??建立动态库?gcc?-fPIC??-c?add.c?../include(放头文件)?生成add.o目标文件?gcc?-shared?-o?libadd.so?add.o?生成libadd.so动态库?这个库的名是add?将这个库放在根目录的lib文件里?gcc?-o?main?main.c?–l?add?../include(放头文件)?(注意这里写的库名,没有lib和.so)?动态库与静态库比较:?动态库只在执行的时候才被链接使用?动态库可以被多个程序使用,所以也称共享库?静态库将会整合大程序中,程序执行是不用夹在静态库,因此静态库会是程序臃肿难以升级,但比较容易部署?动态库便于升级,但不容易部署?使用makefile??三个文件?bin(可执行文件),include(头文件),src(放源文件)?目标项???????????????依赖项?./bin/main:./src/my_add.o?./src/my_minus.o?./src/main.o????//将*.o文件?生成可执行文件?g++??./src/my_add.o?./src/my_minus.o?./src/main.o?-o?./bin/main?-I?./include?./src/my_add.o:./src/my_add.cpp?g++?-c?./src/my_add.cpp?-o?./src/my_add.o?-I?./include?//?生成my_add.o?./src/my_minus.o:./src/my_minus.cpp?g++?-c?./src/my_minus.cpp?-o?./src/my_minus.o?-I?./include?//生成my_minus.o?./src/main.o:./src/main.cpp?g++?-c?./src/main.cpp?-o?./src/main.o?-I?./include???//生成main.o
友情链接
异常 - Exception - Copyright ? 2014 - 2014 - 亚搏体育app异常网 - 鄂ICP备14001750号 - 网站地图