Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356824
  • 博文数量: 109
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 1920
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-19 11:17
个人简介

只要活着,就要有目标。

文章分类
文章存档

2013年(109)

我的朋友

分类: LINUX

2013-04-25 16:42:43

 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

 
   相关技术答疑:

 

阅读(1269) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~