博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux编译程序时的一些注意事项
阅读量:6669 次
发布时间:2019-06-25

本文共 710 字,大约阅读时间需要 2 分钟。

         最近一个星期都在搞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

 

 

转载地址:http://azlxo.baihongyu.com/

你可能感兴趣的文章
如何对DevOps数据库进行源代码控制
查看>>
虚拟主播上线:多模态将改变人机交互的未来
查看>>
Hyperledger Grid:一个用于分布式供应链解决方案的框架
查看>>
.NET或将引入类型类和扩展
查看>>
区块链现状:从谨慎和批判性思维看待它(第二部分)
查看>>
GitHub 重磅更新:无限私有仓库免费使用
查看>>
AlphaZero进化论:从零开始,制霸所有棋类游戏
查看>>
Swift 5进入发布倒计时
查看>>
Git 2.18版本已支持Git协议v2
查看>>
跨平台开发框架的大旗,究竟谁能扛起来?
查看>>
服务应该去版本化,不管是微服务还是SOA
查看>>
Hazelcast发布开源流处理引擎Jet
查看>>
最新版Scrum指南已发布
查看>>
2016年前端盘点合集
查看>>
React 16 Jest ES6级模拟 - 深入:了解模拟构造函数
查看>>
TextView中DrawableXXX图片无法设置大小的解决方案
查看>>
我的网站搭建: (第四天) 导航栏与页脚
查看>>
往"某度文库"上传资源之前,请先做好这些...
查看>>
mysql常用命令和脚本
查看>>
中国外交官有AI当参谋了!不过最后拍板的还是人类
查看>>