Debian 入门安装与配置2

1. C/C++开发必装软件

  atp-get install gcc    这个不用说,用来编译C程序

  apt-get install g++ 用来编译C++程序

  apt-get install make 用来使用makefile文件编译程序

  apt-get install autoconf

  atp-get install automake

  autoconf和automake这两个请参见:Linux下autoconf和automake使用

  (未完待续)

2. C/C++源代码软件安装

  源代码软件安装肯定是经典的三部曲,进入到源代码文件夹,然后进行以下三步操作:

    ./configure      //参考:linux下configure命令详细介绍

    make

    make install

  但经常会出现一些问题:(未完待续)

3. 关于C/C++的默认包含路径 

  GCC作为C/C++程序的编译器,其默认搜索目录决定了我们在程序编译时,一些需要包含的头文件(.h)和链接文件 (.a)去哪里寻找。

  (1)查看默认路径

    首先先来看看编译器的默认搜索路径都是那些,使用如下命令可以查询到GCC的默认头文件(#include<...>)搜索目录:

      #对于C:

      echo | gcc -v -x c -E -

      #对于C++:
      echo | g++ -v -x c++ -E -

    注意:不明白这两个命令只有在root权限下才能看到路径相关内容,也许跟我安装时就是在root权限下有关。

    下图所示g++ 4.9的默认包含目录:


    可以看到默认搜索路径没有/usr/local/include/目录,因为我们一般下载源码编译安装后一般都安装在/usr/local/目录中(包括.h、.a、.so文件),所以这就可以解释我们明明编译了所依赖的源代码,但还是找不到所依赖项,因为编译器的默认搜索路径中没有包含我们编译安装后的文件路径。

    相同道理,使用上述命令也可以查看默认链接文件(.a)的搜索目录,如下图所示:

    运行时动态库路径一般与链接文件路径在一起。

  (2)修改默认路径

    如果想要为GCC编译器添加头文件(#include<...>)和链接文件的搜索路径,可以参考:An Introduction to GCC - for the GNU compilers gcc and g++

    上面的链接中明确指出编译器依赖于下面几个宏来定位搜索路径,但是这几个宏在Debian 8中使用env命令查找后,发现没有,但是在使用上述命令查看时,却出现了LIBRARY_PATH宏,这个宏和我们自定义的宏怎么回事?在这一点上还有很多疑问,不太懂??????

    下面就来简单翻译一下如何使用这几个宏,这几个宏都需要定义在文件(/etc/profile)中或者文件(/home/.bash_profile)中,定义在前者文件中,所有用户都能使用这些宏,定义在后者文件中,则只能定义宏的用户使用。    

      增加头文件搜索路径:

        #对于C:
        C_INCLUDE_PATH=/usr/include/freetype2
        export C_INCLUDE_PATH

        #对于 C++
        CPLUS_INCLUDE_PATH=/usr/include/freetype2
        export CPLUS_INCLUDE_PATH

      #增加链接文件(.a)或静态库(.a)搜索路径:
        LIBRARY_PATH=/usr/local/lib
        export LIBRARY_PATH

      #增加动态库(.so)搜索路径:
        LD_LIBRARY_PATH=/usr/local/lib
        export LD_LIBRARY_PATH

    注意:无论我如何尝试,总是导出LD_LIBRARY_PATH失败,不知为什么??????

    配置文件中的宏定义需要重启后才能生效,首先使用命令:

      echo $C_INCLUDE_PATH  

    逐个查询所定义的宏是否生效,如果生效则使用上面的命令:echo | gcc -v -x c -E - 再次查看GCC默认搜索路径是否多出了我们新添加的路径,如下图所示:


    可以看到其中多出了新添加的路径。

    此外还有介绍/etc/ld.so.conf文件的,都与包含目录相关,可以参考:Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

 

Debian 入门安装与配置2的更多相关文章

  1. Debian 入门安装与配置1

    Debian 入门安装与配置1 最近安装了多个发行版本的Linux,包括Ubuntu.Fedora.Centos和Debian,发现只有Debian在界面和稳定性等综合特性上表现最优,自己也最喜欢,所 ...

  2. MongoDB 学习笔记之 入门安装和配置

    下载MongoDB: 下载解压即可使用. 为了启动方便和统一管理, 在Mongo根目录下建立/data, /logs, /conf文件夹. 在conf文件夹下建立mongodb.conf 文件,基本配 ...

  3. Mongodb入门——安装与配置

    作者:zhanhailiang 日期:2014-11-07 1. 安装mongodb: [root@~/wade/nodejs/nodeclub]# yum search mongodb [root@ ...

  4. Maven入门-安装及配置(一)

    0.Maven简介 三种仓库:

  5. Maven&nbsp;3&nbsp;入门&nbsp;--&nbsp;安装与配置

    Maven 3 入门 -- 安装与配置 Maven以及其Eclipse插件m2eclipse的安装 (本文参考了Maven实战) 检查JDK的安装以及环境变量的配置 打开cmd echo %Java_ ...

  6. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  7. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  8. Debian普通用户获取root权限|sudo的安装与配置

    Debian系统的普通用户需要安装软件时,往往会收到“Permission denied”的提示,这时候需要root权限.那么如何在不登陆超级管理员账户的前提下拥有root权限呢?对于大多数Linux ...

  9. Debian 8下vsftpd安装与配置

    Debian 8下vsftpd安装与配置 0.环境 root@remote:/# uname -r 3.16.0-4-amd64 root@remote:/e# lsb_release No LSB ...

随机推荐

  1. DataGridView复选框实现全选功能,并取被选中的某行某列的值(三)

    目标: 一.选中全选这个复选框,会选中第一列所有的复选框 拉过来一个CheckBox控件(CheckBox1)覆盖在第一列的标题上,文本值:全选 方法:双击上面拉的CheckBox控件,进入其事件 p ...

  2. IBatis.net 输出SQL语句(七)

    一.IBatis.net输出SQL语句到控制台 输出IBatis.net生成的SQL语句到控制台,能够方便调试. 如果要想输出IBatis.net的SQL语句到控制台,那么只需要做如下配置即可: &l ...

  3. POJ 1739

    楼教主男人八题之一... 题目大意: 求从左下角经过所有非障碍点一次到达右下角的方案数 这里不是求回路,但是我们可以考虑,在最下面一行再增加一行,那么就可以当做求此时左下角到右下角的回路总数,那么就转 ...

  4. MonoRail MVC应用(2)-构建多层结构的应用程序

    习惯了分层结构的.NET开发了,当然也是分层有优势,所以在使用MonoRail进行网站构建时,首先考虑到的问题就是MonoRail如何应对分层的结构.问题1:MonoRail在WEB层没有根目录,必须 ...

  5. 离线安装chrome插件

    1. 先百度下载自己要安装的chrome插件,比如:Postman 和 Json View. 2.下载完应该得到的是扩展名为crx的文件. 比如: Postman-REST-Client_v0.8.4 ...

  6. 最大子段和-Program A

    最大子段和 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description G ...

  7. Spring依赖关系

    在Spring中,各个模块的依赖关系通过简单的IoC配置文件进行描述,使这些外部化的信息集中并且明了,我们在使用其他组件服务时,只需要去配置文件中了解和配置这些依赖关系即可,也就是说这里关心的是接口, ...

  8. Portlet和servlet的区别

    相同之处 l 都是java技术开发的web组件 l 都是由特定的容器在管理 l 都可以动态产生各种内容 l 生命周期都是由容器管理 l 和客户端的交互通过request/response机制 不同之处 ...

  9. 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换

    写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创.在此向多位原创作者致敬!!!一.傅立叶变换的由来关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶 ...

  10. java基础-008

     57.面向对象软件开发的优点 代码开发模块化,更易于维护 代码复用 增强代码的可靠性和灵活性 增强代码的可理解性 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象  58.封装 封装给对象 ...