是的,面对全新的centos7的世界,我们选择从编写程序作为切入点,不要纠结了,拿起你那牛逼的电脑,动起手来吧
-------------------------------------------------------以后的练习将在xshell环境下--------------------------------------------------------------
在用户主目录下新建一个目录“linux_c”作为C语言编程练习的工作区(工作区是git里的叫法)
打开vi,编写一个简单的C程序。那么问题来了,在linux里我们怎样编译运行我们的C程序呢,这就需要用到linux世界里最强大的编译器gcc
运行:gcc first.c -o first 此时查看当前目录就会发现出现了可执行文件first,执行可执行文件first:./first 便可以看到运行结果
这是,你可能就会对gcc产生好奇心了,那么gcc怎么使用呢?
---------------------------------------------------------------------gcc用法-----------------------------------------------------------------------------
最常用的方法:gcc 源文件 -o 可执行文件名 其中“-o”参数意为gcc最终产生的结果文件
还可以根据C程序的编译过程:预编译,编译,汇编,链接 分步执行gcc
各项参数含义自行百度
-------------------------------------------------------------------函数库的使用----------------------------------------------------------------------------
C语言是由变量和函数组成的,常用的函数我们常常将其集成函数库。函数库分为静态函数库和动态函数库(区别自行百度),那么问题又来了,怎样使用gcc使用函数库
我们以最基础的一个小程序“求两个数的最大公约数”为例
源程序如下:
/*hanshu.c*/
/* 功能:返回正整数m和n的最大公约数*/
unsigned gcd ( unsigned m,unsigned n )
{
unsigned temp;
if (m<n)
{
temp=m;
m=n;
n=temp;
}
if ( m % n == 0)
{
return n;
}
else
{
return gcd ( n,m % n) ;
}
}
/*zhu.c*/
#include <stdio.h>
unsigned gcd ( unsigned,unsigned ) ;
int main( void )
{
unsigned m,n;
printf("请输入两个正整数:");
scanf("%u%u",&m,&n);
printf("%u与%u的最大公约数为:%u\n",m,n,gcd ( m,n ) );
return 0;
}
1.st静态函数库
在这里我们需要把hanshu.c制作成静态函数库
你会看到如此多的命令,其实实际命令只有四行,请仔细找出我所犯的错误!
这是问题来了,由于源程序里边有汉字,而我安装的时候选择的是英文模式,所以我现在要解决语系的问题
---------------------------------------------------------------------增加中文语系--------------------------------------------------------------------------------
在以往的centos里是需要修改这个配置文件 /etc/sysconfig/i18 的,而在centos7里边需要修改这个/etc/locale.con
将LANG="en_US.UTF-8" 换成 LANG="zh_CN.UTF-8"编辑保存wq即可,重启系统
-------------------------------------------------------继续我们的gcc---------------------------------------------------------------
将文件制作成动态函数库
为什么出不来运行结果呢?错误提示告诉我们找不到共享文件,这是怎么回事呢?
什么?没有查找文件locate这个命令?没关系,没有的话我们就安装。先找包,在安装
安装完成后输入updated 即可使用locate
可以看到动态函数库实在lib目录下的,但是此时运行可执行文件还是会找不到的,这时应该首先想到一个名词:环境变量
-------------------------------------------------环境变量-------------------------------------------------------------
Linux是不会主动找lib路径的,只会找系统路径,我们查看一下系统路径
结果非常肯定,/usr/lib没有在系统变量即linux自动搜索的路径里
解决方案有两个:
1.st 将库放到系统路径
成功解决
2.st在执行可执行文件前,先敲一句:export LD_LIBRARY_PATH=/usr/lib
LD_LIBRARY_PATH是linux系统中一个非常重要的环境变量。
linux会从这个环境变量给定的路径去搜索shared libraries,所以如果你的.so文件所在的path没有加到LD_LIBRARY_PATH中,那么所有需要这个so的程序就无法运行
----------------------------------------------------------------------------------------The End--------------------------------------------------------------------------------------
gcc就介绍到这里,你可能发觉我的思路了,就是以C语言编程为线索,主要是学习centos7.下一节我们将认识程序调试器gdb