zoukankan      html  css  js  c++  java
  • Linux编译程序时的一些注意事项

             最近一个星期都在搞Linux下的一些开源项目,其实很早之前就有捣鼓过,这次再次遇到之前编译程序时遇到的一些问题,因此在这里做一下记录。

     

    一、在C++程序里要包含C语言写的程序的头文件时,在C++文件里应该这样来包含

    extern "C"

    {

    #include "你的头文件"

    }

    注意:这里是大写的C

    举个例子:在一个目录里有main.cpp hello.c hello.h三个文件,而main.cpp文件里要用到hello.c里的函数,那么在main.cpp里就要通过包含hello.h头文件来调用hello.c里的函数,因此在mian.cpp里应该这样写:

    extern "C"

    {

    #include "hello.h"

    }

    否则编译链接时会提示找不到相应的函数,比如:

    :(.text+0x7): undefined reference to ...

     

    二、编译一些程序时,可能会遇到找不到相应的库等问题,这时可以通过下载相应的库的源码来自己编译、安装。

          自己通过下载源码来编译安装的库大多数情况下会默认安装在/usr/local目录下,虽然已经编译安装了,但编译程序时还会提示找不到对应的库,此时需要在/etc/ld.so.conf里添加一行/usr/local/lib,还需要通过命令:

    ldconfig -v 

    来更新。

    所以,以后每次往/usr/local/lib里添加库文件时最好都ldconfig -v 一下。

     

    三. 查看可执行文件所依赖的库

    1. PC Linux上:

    如:#ldd /mypath/hello

    2. ARM Linux上:

    如:#arm-linux-readelf -d hello

     

     

  • 相关阅读:
    a标签跳转新页面
    js或jquery实现页面打印(局部打印)
    js实现点击定位最顶端
    js实现pdf对页面的打印
    js动态创建input
    sha1加密算法
    JsonHelper修改4.0
    List<T>做数据源绑定的问题
    VS2013智能提示
    Newtonsoft.Json(Json.Net)学习笔记
  • 原文地址:https://www.cnblogs.com/lknlfy/p/2421324.html
Copyright © 2011-2022 走看看