0%

Linux下碰到的一些问题

Linux下碰到的一些问题

如何解决warning: no newline at end of file?

今天写了一段代码, 是在Windows下编辑的, 保存后放在linux系统下编译.

gcc和cc都产生以下的警告:

1
a.h:1:2: warning: no newline at end of file

后来发现解决这个问题产生的原因是源文件的最后一行没有回车符造成的; 解决的办法很简单, 在最后一行敲一个回车, 然后保存, 重新编译.

Linux运行文件时报错 bash $’\r’ command not found

这个主要是跨平台的问题,在Windows下编写好的sh文件,丢到Linux下运行会报错:bash: $’\r’: command not found。这是因为Windows系统的文件换行使用的是\r\n,而Unix系统是\n,可以通过下面的方式解决:

通过dos2unix来进行文件转换

1
$ dos2unix filename.sh

或者使用vim打开文件,然后使用命令:set ff=unix,保存文件即可。

send-mail: fatal: parameter inet_interfaces: no local interface found for ::1

在Linux里面使用mail发送邮件的时候报错:

1
2
$ echo 'Title' | mail -s "TEST" mail@mail.com
$ send-mail: fatal: parameter inet_interfaces: no local interface found for ::1

解决方法如下:打开文件 /etc/postfix/main.cf,将原始内容

1
2
3
inet_interfaces = localhost

inet_protocols = all

修改为:

1
2
3
inet_interfaces = all

inet_protocols = all

然后重新启动就ok了,service postfix restart

bashrc每次都不自动导入

新建的用户发现每次都不能把各种环境变量导入进来,导致类似的命令都无法使用,后面发现是少了bash_profile文件,只需要新建该文件:

1
$ touch ~/.bash_profile

然后加上如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

保存退出重新登陆,顺利解决。

/lib64/libstdc++.so.6: version `CXXABI_1.3.8’ not found

这个问题出现在CentOS7上,编译一个软件的时候出现的,首先可以查看CXXABI可用的版本,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_1.3.12
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.12
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.10
CXXABI_1.3.3

查看本机的其他关于libstdc的版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ find / -name libstdc++.so.6
/var/lib/docker/overlay2/7929ef6fe4ed49351d40d41db72096133c8767d3f2aea01eab66040e38efba37/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/docker/overlay2/39955c16316d10641ff5a9ed525094e7b29f0657e26332511c972b437c309598/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/docker/overlay2/42fa5b2822ec5fd3837777e5b06583b6aeab9b48b2a3b168e99f9e3251084d27/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/docker/overlay2/3732c1cb1021032bffa34a3858c00a3c33e4e67102eb7216412a5079ba6f4369/diff/usr/lib64/libstdc++.so.6
...
/var/lib/docker/overlay2/565aeb287ef033e4384a87fcc2f451c68db294e659124f6d772dcb1658470d8e/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/docker/overlay2/hi35aa9ta0ij3t4x3k6br7gm6/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/docker/overlay2/whqa9v6f82q5x1i2mxsh8fo08/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/snapd/snap/core/15419/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/var/lib/snapd/snap/core/15511/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/libstdc++.so.6
/usr/lib64/libstdc++.so.6
/home/oper/anaconda3/lib/libstdc++.so.6

解决的方法,很简单,且已经奏效,把anaconda里面比较新的做一个软连接到/usr/lib64即可解决,不过记得做好备份。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道