Linux编译程序时的一些注意事项
2012-03-30 12:38
363 查看
最近一个星期都在搞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"
}
否则编译链接时会提示找不到相应的函数,比如:
二、编译一些程序时,可能会遇到找不到相应的库等问题,这时可以通过下载相应的库的源码来自己编译、安装。
自己通过下载源码来编译安装的库大多数情况下会默认安装在/usr/local目录下,虽然已经编译安装了,但编译程序时还会提示找不到对应的库,此时需要在/etc/ld.so.conf里添加一行/usr/local/lib,还需要通过命令:
ldconfig -v
来更新。
所以,以后每次往/usr/local/lib里添加库文件时最好都ldconfig -v 一下。
一、在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 一下。
相关文章推荐
- Linux编译程序时的一些注意事项
- Linux编译程序时的一些注意事项
- Socket程序从Windows移植到Linux下的一些注意事项
- linux环境下编译源码和运行程序时,include文件和lib库文件的注意事项
- Socket程序从Windows移植到Linux下的一些注意事项
- Socket程序从Windows移植到Linux下的一些注意事项
- 如何提高android程序运行效率,程序员在开发过程中应当注意的一些事项
- DOC编译和运行java程序注意事项
- 基于bluez程序编译时注意事项
- U盘安装WIn8.1和Centos7 linux双操作系统一些注意事项
- linux下使用C获取mp3 ID3数据时的一些注意事项(v1,v2.3,v2.4)
- OpenCV程序交叉编译注意事项
- Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)
- LINUX 动态库编译和使用的注意事项
- Linux下编译一个静态链接的程序的注意点
- Linux程序开发、编译过程相关的一些指令
- Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)
- Linux 编译的一些注意参数
- [转]一些关于linux下编译C++程序的东西
- 使用源码编译3D Slicer3的一些注意事项