• 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
  • 相关阅读:
    FpSpread实现筛选的功能
    比较通用的ID,ParentID结构表,返回树路径。
    如何解决,在安装Sql2000时,出现程序挂起的解决方法。
    FarPoint Spread 控件如何实现剪切,粘贴,复制
    MySql中Group By和Order By使用的注意事项!
    php md5下16位和32位的实现代码
    Shadows在C#代替方法!
    FTP命令使用详解
    数据库中存放目录与文件结构,方案选择
    vs2008 sp1下载
  • 原文地址:https://www.cnblogs.com/shenckicc/p/7205199.html
Copyright © 2020-2023  润新知