1. 如果程序需要运行在以太 ,请使用以下编译器及连接器:
     a) GNU C编译器及连接器:
     b) GNU C++编译器及连接器:
     c) GNU Fortran77编译器及连接器:
     d) Intel C编译器及连接器:
     e) Intel C++编译器及连接器:
     f) Intel Fortran77编译器及连接器 :
     g) Intel Fortran90 编译器及连接器:
  2. 如果程序需要运行在Myrient ,请使用请使用以下编译器及连接器:
     a) C编译器及连接器:
     b) C++编译器及连接器:
     c) Fortran77编译器及连接器: 
以命令行方式编译并连接代码
  如果程序非常简单,只有一个源文件,那么可以直接以命令行的方式编译并连接代码,下面是一个简单的例子,假设程序只有一个文件helloworld.c。那么可以使用下面命令:
   其中:
     1. :编译及连接器,可以选择上节提到的任何一种编译及连接器。
     2. :编译输出的可执行文件。
     3. :要编译的文件。
     4. 如果要使用了数学库(math.h),要加上编译选项:-lm。
     5. 针对不同编译器的编译选项请查阅对应编译器的使用手册。
以Makefile方式编译并连接代码
  如果应用程序很复杂,包含多个源代码文件,可以使用Makefile来编译整个程序。Makefile包含了编译程序需要所有信息,并且必须位于源代码文件所在目录。
   编写完makefile后,直接在makefile所在目录下运行make,即开始编译。
   如果运行make clean,将删除所有输出文件。
   但是需要注意的是这些命令会根据makefile描述来执行,所以makefile是否正确非常重要。下面举一个makefile的简单例子,更系统的信息需要您查阅这方面的参考资料。
   假设一个项目包含了9个源文件:MTfile.cpp MTentry.cpp MTnode.cpp MTpredicate.cpp MTobject.cpp MT.cpp MTcursor.cpp Main.cpp BulkLoad.cpp及对应的.h文件,下面这个程序的Makefile文件。 
说明:
 1. #开头为注释。
 2. 第3行中Objects_mtree 的值指定各个cpp文件编译得到的.o文件名称,并用空格隔开。
 3. 第5行中CC的值指定了编译器。
 4. 第6行中CLINKER的值指定了连接器。
 5. 第8行中CFLAGS的值指定了编译器的编译器选项,由用户指定,如果有多个用空格隔开,-DUNIX就是该程序自己的编译选项。
 6. 第9行中LINK的值指定了连接器的连接选项,由用户指定,如果有多个用空格隔开。
 7. 第11、12行表示采用的make命令和shell环境。
 8. 第16行中的LIBS的值指定了程序在连接时需要的额外函数库。
 9. 第17行中的EXECS的值指定了程序最后编译连接得到可执行文件。
 10. 第19行 “default: mtree”表示默认输出的可执行文件为mtree。因为当需要编译程序时,可以运行make,make命令将去寻找default参数指定的文件名作为默认输出的文件名。
 11. 第21行“mtree:….”,说明如何去连接输出mtree这个可执行文件,即运行make mtree时执行的命令。这一行和第22行是固定格式,冒 后面指定需要连接的文件结合,$(Objects_mtree)表示变量Objects_mtree的值,即在第3行指定的.o文件集合。
 12. 第22行必须以tab键开头,不能使用空格。
 13. 第24、25行“clean:…”,说明当运行make clean时执行的命令,这里是将输出.o文件和可执行文件删除。25行必须以tab键开头。
 14. 第27、28行说明如何将.cpp编译成.o文件,28行必须以tab键开头。
 15. 最后一行“.SUFFIXES: .cpp”表示该程序的源代码文件是.cpp文件。
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114040 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!