linux使用杂记

最近工作中遇到一些小问题,现在抽时间来总结一下。由于问题没什么主题,就题名杂记吧

VScode中#include的规则

之前在Windows的Visual Studio中基本不会考虑编译链接的问题,可是在linux下就得考虑这些问题。之前习惯将项目的所有头文件包含在stdafx.h中,然后所有文件包含stdafx.h这个文件,这样就避免反复添加头文件。可是在VSCode中会出现循环包含头文件的问题。例如stdafx.h中写有#include”A.h”,但A.h中也写了#include”stdafx.h”,那么这两个头文件包含彼此,就会出现循环添加的错误。

思考之后我打算这样安排头文件,stdafx.h中包含的是标准库等一些外部的头文件,而自己写的头文件不添加在stdafx.h中。因为这些标准库基本很多地方都会用,所以自己写的头文件都#include”stdafx.h”。而如果要使用自己写的头文件,就在对应的文件添加。当然对于一个类,cpp文件都会包含自己的头文件(可以不包含stdafx.h文件)。这样有时也难以避免重复包含,如果检查出重复包含的头文件,使用#ifndef—#define—#include—-#endif结构来解决。

顺便记一点,include的包含规则是,“”先在项目目录中搜索,之后和<>一样会按照这个顺序搜索

/usr/include

/usr/local/include

/usr/lib/gcc-lib/i386-linux/2.95.2/include

环境变量的设置

linux在启动终端时会运行很多脚本来添加环境变量,我在安装一些工具的过程中也会在这些文件中修改环境变量。这里记录一些我常用的用来修改环境变量的文件位置

~/.bashrc
/etc/bsah.bashrc
/etc/sudoers
/etc/profile

如果环境变量出了问题,应该首先在这几处修改。
简要说明这几个文件的区别
1) /etc/profile:此脚本是全局环境的设置,对系统中的每个用户都有效,每个用户登陆后都会立即执行/etc/profile脚本。因此,不管哪个用户登陆后都要执行的任务放在此脚本中。

2) ~/.bash_profile:它是用户家目录下私有环境的设置,只对某一个特定的用户有效,即某一个用户登录后会执行它自己相应家目录下的.bash_profile脚本,利用它用户可以进行个性化设置。

3) /etc/bashrc:对所有用户都有效,当打开shell时会执行此脚本,他保存的是系统bash shell的信息。

4) ~/.bashrc:对某一个特定的用户有效,当用户每打开一个shell时都会执行此脚本。

protoc的版本管理

caffe使用Google的protobuf来做数据的描述。一开始我不能翻墙,所以不能安装Google的protobuf。解决方案是使用annconda的conda install protobuf,从清华的镜像中下载。但这样是安装在anaconda中的,而不是Google的安装位置。后来不知道为什么,我的电脑上又有一套protobuf。可能是升级chrome浏览器时下载的。而且两者版本不同,这就导致了很多问题。我的版本管理管理方法是借鉴这篇文章:Caffe安装中多版本protoc选择问题。就是设置环境变量的顺序。

对.so或者.a文件找不到或者不支持

在debug的过程中如果遇到not available,not found等等,最好先去这个文件位置找找这个文件是不是真的存在。有时候只是因为版本差异,导致路径出了问题。我的方法是在其他位置寻找这个包,然后copy到对应的位置,或者用ln -s生成软连接。

LIBTIFF错误的纠正

在程序中使用caffe出现了错误

/usr/local/lib/libopencv_imgcodecs.so.3.3.1:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用

这个错误应该是openCV在编译时的设置问题引起的。只要在cmake编译openCV时使用命令:

cmake -D BUILD_TIFF=ON ..

然后重新编译就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值