目录
1.3 centos8安装gcc、make、cmak、gdb等依赖
前言
上一章《hualinux c 1.3:c语言的ide神器CLion安装》讲了windows下安装Clion编写win上的C,现在这篇,牛B点,远程linux进行C/C++开发!废话少说,现在开始
一、环境说明
1.1 说明
本地系统:win7 64位旗舰版,主要在上面安装CLion IDE开发工具,目前新版本为2020.1
虚拟机系统:centos8.1 64位,最小化安装
名称 |
版本 |
安装方式 |
备注 |
Clion |
2020.1 |
exe |
官网下载直接安装即可 |
xshell |
6.0 |
exe |
可以官网下载家庭免费版,不建议使用破解一般有木马 |
gcc |
8.3.1 |
dnf |
在这里直接dnf install安装即可 |
make |
4.2.1 |
dnf |
这里也是直接安装 |
cmake |
3.11 |
源安装 |
不能低于3.16 ,dnf安装的为3.11 |
gdb |
8.2.6 |
dnf |
直接dnf就够了 |
1.2 centos8相关设置
1.2.1centos8安装兼容包(已安装)
服务器端和客户端同时操作
#兼容centOS6之前的命令
yum install -y net-tools
不关闭也可以要让其端口通过防火墙
1.2.2关闭selinux(重要)
如果不关闭selinux的话,有些自定义路径不符它的规则会产生问题,一般推荐关闭
-
#临时关闭:
-
setenforce off
-
#永久性关闭:
-
sed -i
's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
-
sed -n
'/SELINUX=/p' /etc/selinux/config
-
shutdown -r now
1.2.3关闭防火墙
-
#停止firewall
-
#禁止firewall开机启动
-
systemctl stop firewalld.service
-
systemctl
disable firewalld.service
1.2.4时间同步(最好要)
有不少软件对时间有要求的,不能相差太多,比如主从、zabbix等,所以建议配置一下
centos8已经取消了ntp,默认使用的是chronyd
- chronyd 和 ntpd 性能对比 https://chrony.tuxfamily.org/comparison.html#Performance
- 为什么要使用 chronyd 替换掉 ntpd https://chrony.tuxfamily.org/comparison.html#Summary
有些软件时间性要求比较强的,如同步类,数据库主从,做实验也最好同步一下时间
-
#yum和dnf都可以安装,推荐用dnf
-
#yum install chrony
-
dnf install chrony
在第8次迭代之前,CentOS使用yum包管理器。从CentOS 8开始,包管理已经从yum迁移到Dandified yum (DNF)。DNF最早是在Fedora 18中引入的,并成为Fedora 22中的默认软件包管理器,它与yum使用上非常相似。
#配置时间服务器,我这里使用的是中国区的
-
#备份配置
-
cp /etc/chrony.conf /etc/chrony.conf.orig
-
#注解掉pool
-
sed -i
'/^pool/s/^/#/' /etc/chrony.conf
-
grep
'#pool' /etc/chrony.conf
-
sed -i
'/#pool/a\server cn.pool.ntp.org iburst' /etc/chrony.conf
-
sed -i
'/#pool/a\server ntp.ntsc.ac.cn iburst' /etc/chrony.conf
-
sed -i
'/#pool/a\server ntp1.aliyun.com iburst' /etc/chrony.conf
-
grep -A 3
'#pool' /etc/chrony.conf
效果:
#重启服务
systemctl restart chronyd.service
1.2.5 安装第三方源epel源及remi源
-
#安装epel源可以下载比较新版本的软件及部分默认没用的yum软件
-
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
-
wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
-
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
-
rpm -ih remi-release-8.rpm
-
rm -f remi-release-8.rpm
1.2.6在history命令前添加时间显示
-
echo
'#by hua '>> /etc/bashrc
-
echo
'export HISTFILESIZE=100000000' >> /etc/bashrc
-
echo
'export HISTSIZE=1000000' >> /etc/bashrc
-
echo
'export PROMPT_COMMAND="history -a"' >>/etc/bashrc
-
echo
'export HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S "' >> /etc/bashrc
-
source /etc/bashrc
1.2.7 修改文件连接数
#刚安装完系统的时候默认文件连接数为1024个,可以使用命令“ulimit -n”查看
#这样太小了不够用,所在生产环境一般都会修改此项。阿里云默认的tcp连接数是65535,#过大会报警,这样我们参照大哥的做法,因为一般他们都测试大量测试的。
-
cat>>/etc/security/limits.conf<<EOF
-
#by hua
-
* soft nofile 65535
-
* hard nofile 65535
-
EOF
-
tail -5 /etc/security/limits.conf
-
#要生效需要断开ssh再连接即可
-
-
ulimit -n
1.3 centos8安装gcc、make、cmak、gdb等依赖
1.3.1 dnf安装gcc make gdb
用Xshell登陆centos8.1,这里使用的是root权限,我这里的内网IP地址为192.168.3.81
dnf install -y gcc gcc-c++ make gdb
1.3.2 源安装cmake
进入官网地下载地址:https://cmake.org/download/ ,目前最新版本为3.17.2,可以选择二进制安装也可以选择源码安装,我这里选择源码安装吧。
如果慢也可以直接去官网github下载,地址为:https://github.com/Kitware/CMake/releases,一样的
因为下载地址是变化的,所以我就先下载么本地的win上,再上传就行了
#1 安装相关依赖
-
dnf install -y libuv automake lrzsz openssl openssl-devel
-
dnf --enablerepo=PowerTools install -y texinfo
#2 安装cmake
-
#卸载低版本的cmake
-
dnf remove cmake -y
-
-
#3.源安装cmake
-
mkdir -pv /disk1/tools
-
cd /disk1/tools
-
#直接把刚才的二进制tar.gz包拖进xshell的窗口中放手就可以了
-
tar -xf cmake-3.17.2.tar.gz
-
cd cmake-3.17.2/
-
#根据README.rst说明得知安装
-
./bootstrap
-
gmake
-
mak install
-
cd ..
-
cmake --version
-
-
#为了让Clion能访问到添加一个软链接
-
ln -s /usr/
local/bin/cmake /usr/bin/cmake
1.4 Clion安装及配置
1.4.1 Clion安装
Clion 下载安装完之后并不能直接运行C++项目,需要配置一个环境,有cygwin和MinGW64可选择,我这里选择MinGW64,如果是远程linux的话可以不用安装。
下载地址:https://www.jetbrains.com/clion/,这里是exe安装,具体安装就不说了,没有什么好讲的。安装完双击桌面的Clion图标运行即可。如果有下面2个图则相对进行操作
这个软件注册破jie网上一大把,我这里就不说了
1.4.2 Clion配置远程
安装完成之后打开CLion,在主界面选择 Configure -> Settings
注:如果没有找到主界面,可以在登陆之后选择“File-->settings...”
正确的话就OK了,如果不行关闭再配置多几次
注:如上面手工要指定Make路径,千万别填CMake的路径,否则运行会报错,无法生成运行配置
从上面图中看到还配置 了一个win的MinGW,是默认的,所以需要上移一下,变成默认
二、建立一个简单的hello测试
2.1 建立项目
点Clion中的“New Project”,照着提示填写就行了
注:这里我用的是C最新的标准C11,当然也可以使用其它,越老兼容性越好,新标准会做一些修改
显示一下工具栏:ViewàAppearanceàToolbar
进到界面看到IDE最下面有数据产生,如一切正常的话会自动生成运行配置(运行配置是不用手工配置的)、生成简单的hello world C语言文件、生成调试目录及文件,如下图:
#点工具栏中的“运行”按钮 ,看一下运行效果,在IDE最下方有运行结果
上面中是在linux上运行正常,默认路径为:/tmp/tmp.8usYEwHy43/cmake-build-debug目录是IDE随机生成的,因为我没有指定C语言的保存路径,如果要修改路径的话可以看2.2章节
2.2 修改指定目录(可选)
如果我们想修改默认的“/tmp/tmp.8usYEwHy43/cmake-build-debug”目录怎么办?
#在这里先用xshell登录centos8,建立一个放c的程序目录
mkdir -pv /disk1/hualinux/myc
注:如果非root权限,需要修改一下所拥有用户权限,保证能写入和执行权限
可以用打开setting-->Build,Execution,Deployment-->Deployment
如弹出下面的框架则表示OK
重新同步一下使其生效,在项目根目录(空白处也行)右击,选择“Reload Cmake Project”
再次运行程序看一下效果:
注:如使用Deployment,则不会上传运行产生的数据目录,在IDE中为橙色,是Exculuded(排除)的意思,这里是cmake-build-debug目录,如果不上传它则不能远程调试
Deployment操作如下:
项目根目录右击,选择“DeploymentàUpload to…”
之前的版本会少了cmake-build-debug目录,发现2020版本还是存在
2.3 查看生成的执行文件
如果要查看生成的文件怎搞呢?可以在cmake-build-debug下面找到以项目名命名的文件
我这里是“myc”,在linux查看“/disk1/mycTest/cmake-build-debug”目录效果为
可以复制出来试下,如复制到/disk目录下执行,操作如下:
-
[root@vm81 ~]
# cp /disk1/hualinux/myc/cmake-build-debug/linuxc /disk1/
-
[root@vm81 ~]
# /disk1/linuxc
-
Hello, World!
三、常见问题
3.1 控制台中文乱码解决
为了显示中文,我把World改为中文的“世界”
printf("Hello, 世界!\n");
3.1.1 修改文件编码
当代码中有中文的时候,因为我是远程centos8.1调试的,默认使用的是UTF-8,所以要
在settings中设置UTF-8,操作如下:
当代码中有中文的时候,因为我是远程centos8.1调试的,默认使用的是UTF-8,所以要
在settings中设置UTF-8,操作如下:
- 打开settings,点工具栏中 或“FileàSettings…”
- 设置文件编码为UTF-8,如下图:
这样做还不行,故意在main中写错一个,如printf()改为printfa,运行就会报错,如下图:
3.1.2 修改VM参数
所以还得继续修改,这次修改VM配置参数
Help-->Edit Custom VM Options...
在尾部添加:如果有破jie的,就不能写在尾部,写在破解上面就行
-Dfile.encoding=UTF-8
关闭CLion,再打开,发现连接不上了,可以看下一章《3.2 再次使用CLion发现远程连接不上解决》解决方法,解决了连接不上的问题之后,再次运行发现显示正常了,如下图:
3.2 再次使用CLion发现远程连接不上解决
关闭CLion再打开CLion发现报错,远程连接不上的情况,如下图:
出现上现错误主要是配置中没有保存密码,造成连接不上。
点上图中蓝色的“Configure”会跳到配置窗口,发现报错,如下图所示:
ps:测试发现密码是无法保存的,每次都会丢失,所以每次都需要操作一下
能连接上的后,再点“ok”使生效,会回到原来界面,又变正常了
最好在其同级的“Deployment”也测试一下,确保能使用SFTP正常连接
最后在
这样就正常回来了,看最正下方的控制台如下图所示:
3.3 同时编写多个main函数运行文件
默认情况下,CLion只能有一个main主函数,但在练习中,我们往往同时需要多个单文件的main,这样就可以把练习的保留下来,下次使用的时候再运行即可。
C不像java只有有main旁边就有一个运行图标供你运行,在CLion中可修改一下CMakeLists.txt
配置文件即可,使用方法也很简单,在CMakeLists.txt添加一个add_executable()即可,语法如下:
add_executable(名字 源码)
例子:
建立一个t1.c的C语言文件,使用main()函数打印,代码如下:
代码如下:
直接运行试下:
会报如下错误:
打开CMakeLists.txt ,修改如下:
把整个项目Reload一下
工具栏的运行项中多了一个myt1,如下图
选中myt1 点旁边绿色三角运行一下,发现可以运行了,如下图所示:
转载:https://blog.csdn.net/hualinux/article/details/106387606