• Linux系统编程手册-源码的使用


    转自:http://www.cnblogs.com/pluse/p/6296992.html

    第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下:

    ename.c.inc

    error_functions.h

    get_num.h

    tlpi_hdr.h

    其中ename.c.inc文件定义了一个字符串数组,用于对应错误码的名称。

    error_functions.h文件声明了本书自定义的错误处理函数。

    get_num.h文件声明了本书自定义的数值提取函数。

    tlpi_hdr.h文件则包含了后续需用到的系统调用头文件。

    由于存在3个头文件以及2个实现,每次编译时必须对实现也进行编译,为方便后续学习,采用将头文件复制到默认的编译器寻找目录下,并将实现打包成静态库,然后使用别名来默认链接静态库。

    以Debian/Ubuntu为例,具体操作如下:

    第一步:下载本书所给的源码文件

    wget "http://man7.org/tlpi/code/download/tlpi-161214-dist.tar.gz"

    第二步:解压后,make编译

    tar -zxvf tlpi-161214-dist.tar.gz
    cd tlpi-dist/
    make -j

    第三步:拷贝头文件至系统目录

    cd lib/
    sudo cp tlpi_hdr.h /usr/local/include/
    sudo cp get_num.h /usr/local/include/
    sudo cp error_functions.h /usr/local/include/
    sudo cp ename.c.inc /usr/local/include/

    第四步:制作静态库文件

    g++ -c get_num.c error_functions.c
    ar -crv libtlpi.a get_num.o error_functions.o
    sudo cp libtlpi.a /usr/local/lib

    第五步:简化编译命令

    alias gl++='new() { g++ $1 -ltlpi;}; new'

    第五步需要在当前用户的主目录下的.bashrc文件中设置别名,由于alias不支持参数,因此需要使用函数来间接实现,并且接受一个参数$1以指定对某个源文件进行编译并链接之前的静态库libtlpi.a。配置完毕后重新读入.bashrc文件以生效。这里使用函数来接受一个参数存在一个缺点即只能使用一个命令行参数,多余参数将被忽略。

    完成上面的步骤后,即可使用快捷命令来编译我们的程序了:

    gl++ main.cpp

    该命令将编译生成a.out文件。

    如果不想使用第五步来简化,则每次编译手动来链接库,命令如下:

    g++ main.cpp -o main -ltlpi
  • 相关阅读:
    Effective.Java第67-77条(异常相关)
    淘宝店的图片哪里来的
    SEO高手在扯蛋?
    多少人,没能熬过那最初的三厘米!
    网站要提高权重要总结三点
    真正的干货是什么?
    google打不开怎么办?谷歌打不开的解决方法
    StatCounter
    教你如何抢注一个快过期的域名
    正确识别希捷Backup Plus新睿品1TB正品,杜绝奸商猖獗
  • 原文地址:https://www.cnblogs.com/shenckicc/p/7205199.html
Copyright © 2020-2023  润新知