zoukankan      html  css  js  c++  java
  • 【Linux】 C++编程(vim)

    一,编译(compile)

             含义:用编译器(compile)将源代码生成二进制目标文件。在Window下为.obj。在Linux下为.o文件。

             要求:编译器要求,语法正确。编译器只检测程序语法和函数、变量是否被声明,函数并不许要被定义。

             编译语法:g++  -c  file.cpp  其中-c 为compile生成 file.o的目标文件

    二,链接(link)

            含义:将所有需要到函数所在的文件爱你链接在一起合成为可执行文件。

            语法:g++  file.o -o  file.exe  其中-o 指生成可执行文件(output)。默认为a.out


          【合并】g++  file.cpp  -o  file.exe

    三,库(library)

           含义:对于一个源文件很多的大项目,为了避免重复编译,也为了方便编译器链接,通常会把一些常用到的目标文件打包(archive),于是就成为了传说中的库文件(library)。在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件

           语法:1)ar -- create, modify, and extract from archives.
                            @Usage: ar cr lib****.a file1.o file2.o   // **** 为自定义的库文件名。
                           标签 c (create):如果库不存在,则创建库;
                           标签 r (replace):如果库中已存在要添加的对象文件,则旧的对象文件将被替换。

    实际上 ar 只是一个打包工具,是archive(打包)的首字母。它将一系列的目标文件首位连接在一起,并内嵌一个索引表,使得编译器能够方便地找到所需要的函数。一般来说,由于函数索引表的存在,对库的链接要比对一般的对象文件的链接更快。如果 ar 未能完成此项索引表工作,还可以手动用以下的 ranlib 命令创建索引表。

                      2) ranlib -- generate index to archive.
                      @Usage: ranlib lib****.a

                      3) nm -- list symbols from object files.

                      nm可以用来显示 ranlib 所构建的索引表。你将会看到所有库里的函数名(除了模板函数template function)。


    四, 在编译时链接库

    创建了自己的库,以后要用到相关函数的时候,只需在代码中声明所要用的函数(必须和库中定义得相同)。在链接的时候,需要给出库的名称和位置:

    g++ file1.o file2.o -o program.exe -L**** -l****

    -L 后紧跟库文件所在的目录地址,-l 后紧跟库名。

    编译器在链接的时候会在所指定的目录地址下寻找名为 lib****.a 的库文件。




     


  • 相关阅读:
    LF 第三章 装饰器和迭代器相关
    Python 文件管理
    Python 强制类型转换
    安装模块
    LF 第三章
    pep8 Python编码规则
    Help on module pyclbr:
    Help on class timedelta in module datetime:
    Help on function meshgrid in module numpy.lib.function_base:
    Help on module matplotlib.cm in matplotlib:
  • 原文地址:https://www.cnblogs.com/secbook/p/2655041.html
Copyright © 2011-2022 走看看