摘要:
C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++ 认为预处理后的文件(.i)是C++ 文件,并且设定C++ 形式的连接. 源文件后缀名指出语言种类以及后期的操作: .c C源程序;预处理,编译,汇编.C C++源程序;预处理,编译,汇编.cc C++ 源程序;预处理,编译,汇编.cxx C++源程序; 阅读全文
摘要:
makefile下$(wildcard $^),$^,$@,$?,$ $@当执行此规则的命令时,自动环变量“$*”被展开为“茎” 在这里就是。“big” “little”和。静态模式规则对一个较大工程的管理非常有用。它可以对整个工程的同一类文件的重建规则进行一次定义,而实现对整个工程中此类文件指定相同的重建规则。比如,可以用来描述整个工程中所有的.o 文件的依赖规则和编译命令。通常的做法是将生成同一类目标的模式定义在一个 make.rules 的文件中。在工程各个模块的 Makefile 中包含此文件。 阅读全文
摘要:
gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。误区二:gcc不会定义__cplus 阅读全文
摘要:
一. 动态链接库的原理及使用Linux提供4个库函数、一个头文件dlfcn.h以及两个共享库(静态库libdl.a和动态库libdl.so)支持动态链接。Ø dlopen:打开动态共享目标文件并将其映射到内存中,返回其首地址Ø dlsym:返回锁请求的入口点的指针Ø dlerror:返回NULL或者指向描述最近错误的字符串Ø dlclose:关闭动态共享文件函数dlopen需要在文件系统中查找目标文件并为之创建句柄。有四种方法指定目标文件的位置:Ø 绝对路径Ø 在环境变量LD_LIBRARY_PATH指定的目录中Ø 在/et 阅读全文