一些乱七八糟的汇总

也不是很正式的一篇文章,就是有时做事的时候总会遇到一些奇奇怪怪的问题,或者有一些比较常用但是总是记不住或者懒得记的东西。
标题是索引。应该会不断加东西进去,就当字典用了呗,下次遇到就不用费劲找了。

VS error LNK2019: 无法解析的外部符号

一般来说,“无法解析的外部符号”后面就是一大串看不懂的鬼东西。
这个是链接错误,一般来说在代码上是不会有小红线提示哪里错的,因为代码完全没错。
自己写的工程一般是不会有这种错误发生的,一般是试图重新编译生成别人的工程的时候回出现这种问题,为什么呢,因为

有外部依赖项还没添加

解决方案:

  • 项目 -> 属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项
  • 添加漏掉的支持包,一般应该是.lib文件
  • 如果有别人给出的完整工程,可以看下别人的依赖项都加了些什么。

This function or variable may be unsafe

这种错误一般出现在试图在C++中用C函数的时候。
错误原因是

C++里对一些C函数进行了优化改进,增加了安全性
当然,还是兼容以前“不安全”的C函数,但是就会报unsafe错误,要你用更安全的,后缀_s的函数。

解决方案:

  • 就像降低防火墙安全等级一样。
  • 项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理器定义
  • 添加 _CRT_SECURE_NO_WARNINGS
  • 完成,再编译就不会出unsafe错误了

C文件流的简单操作

虽然C++的文件流操作很方便很强大,但是有时候还是免不了要用C,每次写C的文件流操作都要百度,超麻烦,干脆写下。

FILE *p;
FILE *fp;
char buf[4230];
p = fopen("filepath.postfix","rb");
fp = fopen("fpath.pfix","wb");
fread(buf, 200, 12 ,p);//共读取200*12=2400个字节
fwire(x, 6, fp);//把x的前6个字节写入fp
fwrite("haha",fp);//把haha写入fp

Linux下的复制命令

cp 源文件路径 目标文件路径

复制文件夹时出现“omitting directory”,原因是文件夹下有子文件夹,需要递归复制,如下

cp -r 源文件路径 目标文件路径

Ubuntu下改变文件夹属性

有很多文件夹是需要root权限才能读写和修改的,有时候我们想方便地在图形界面操作,那就需要在终端下修改文件夹的权限。

chmod -R 777 filepath/

其中 -R 是递归修改文件夹及其所有子文件夹的属性。
777是最高权限。其他权限可以参考
http://www.codeceo.com/article/linux-chmod-command.html
常用的截图如下:
这里写图片描述

Linux下删除文件命令

rm 文件名

如果是删除目录,需要递归删除,如下

rm -r 目录名

如果需要强制删除(不弹出提示),需要增加 -f 选项
所以 rm -rf 不要乱用,尤其绝对不能在根目录用,否则整个系统就被删得一干二净还不给你提示和取消的机会。
其他参数见
http://zhidao.baidu.com/link?url=Xuu7mfsiVTltQ3e5ntuzqHTBExDlkh6_tNfKUyvig0z1xtj-Og1rvmqRN_iG9GKTk3OAxmh28UF9ITL8fdO5Wq

Ubuntu下每次打开终端就弹出错误提示

打开终端的过程其实也是执行一个脚本的过程。
打开终端后立刻弹出错误提示,证明终端的配置脚本出现了问题。
这个脚本是 .bashrc 文件

  • 首先确定是哪一个用户出了问题。把 /home/username/.bashrc移走,然后打开终端,如果错误没有出现,那就是被移走的配置文件除了问题。
  • 但是不能只移走配置文件,否则所有的环境变量全都没了。我们要打开这个.bashrc文件,找到出错的那些代码,删掉。那些代码都是你自己在终端手敲进去的,很容易判断。

总之,打开终端出现问题就是.bashrc出了问题,打开文件,筛查即可。

gcc的一些用法

  • gcc xxx.c 编译并链接,一般不会这么用,会出很多错误
  • gcc -c xxx.c 编译源文件,生成.o文件
  • gcc aaa.o bbb.o -o result 链接aaa.o和bbb.o,生成可执行文件result

Windows CMD下删除文件夹

有时候我们想删掉某个文件夹,但是被提示权限不够,真的很窝火,这时候用管理员权限的CMD,用命令行删除是最方便也是好用的方法。
命令如下:

del /S Dir_name

其中 Dir_name 就是你想删除的文件夹名了, /S 的意思是删除所有子目录下的文件,相当于Linux下的 -R

make: 警告:检测到时钟错误。您的创建可能是不完整的。

时钟没同步的原因,虽然貌似不影响编译结果,但是看着不爽。
解决方法如下:

$ touch *

或者

find . -type f -exec touch {} \;

wrong ELF class: ELFCLASS32

在做嵌入式Linux工作的时候,有时候会出现这个错误,什么时候呢,头晕的时候,为什么呢。

- 错误原因:平台不兼容
例如32位不兼容64位,x86不兼容arm 之类的。

举个例子:
我在x86下写了一个基于arm的插件,并且用交叉编译工具生成了一个文件,然后在x86平台下试图打开这个文件,那肯定就出问题了。

- 解决方法:换平台
续上述例子:我把文件转移到TK1(arm平台)下打开,就不出问题了。

Github Desktop 安装失败解决方法

在实验室的电脑上安装Github Desktop,打不开安装程序,只提示说
an error occurred attempting to install Github
后来看了log,发现是下载
http://github-windows.s3.amazonaws.com/GitHub.application
的时候出了问题。但是把这个链接放到Chrome上下载下来的东西也是打不开。
后来在网上找到了解法,
要用IE打开,并且需要将 http 改为 https ,即

https://github-windows.s3.amazonaws.com/GitHub.application

网络连接正常,但是浏览器无法访问网页

实验室的电脑长期不关,上次重启之后忽然发现chrome会闪退,无论什么网页都显示“无法访问,可能已经永久性移到别的域名”。IE也打不开网页,同样显示无法访问。
测试过程如下:
1. chrome里打开www.baidu.com,无法访问;
2. IE里打开www.baidu.com,无法访问;证明不是Chrome的设置问题;
3. cmd里,ping www.baidu.com,有数据包回传,证明网路连接没问题;
4. cmd里ping的时候,会解析出百度的IP地址 112.80.248.74,在Chrome里输入该域名,依然不能上百度;证明不是DNS的问题;
5. 在cmd(管理员)里输入netsh winsock reset,刚按下回车,Chrome马上就打开百度了;证明是Winsock协议配置有问题,重置一下就好了。

Linux下修改终端配置脚本

有一些程序需要增加环境变量,一般是写成一个脚本的形式,如settings.sh
然后$ source settings.sh
这样就有一个问题,每次打开新的终端都要source一次,怎样才能避免这个麻烦呢?
答案就在 ~/.bashrc
这是个脚本文件,用于配置终端,每次打开终端之后都会自动执行。只需要把“source settings.sh”加到.bashrc文件的最后,就能自动执行source,而不需要每次都手动输入。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值