共 1 篇文章

标签:Linux NLS Name:深入了解Linux中NLS名称的作用和应用 (linux nls name)

Linux NLS Name:深入了解Linux中NLS名称的作用和应用 (linux nls name)

一、 引言 Linux是一种开源的操作系统,由于其开放性、安全性、高效性等特点,受到越来越多技术爱好者、开发者、企业的青睐。Linux中NLS(National Language Support,国际化支持)是与字符集和多语言有关的重要概念,它为不同的语言和区域提供了支持,具有很大的作用和应用价值。本文就通过深入分析Linux中的NLS名称,探讨NLS的作用和应用,帮助读者更好地理解和使用Linux。 二、 NLS名称的定义 NLS在Linux中是一个用于字符集和本地化的标准接口,它为不同语言和区域的用户提供了支持。NLS名称是用于标识不同字符集和本地化环境的Unicode名称,主要用于文件系统的编码、系统日志的记录、系统时间的设置等方面,是Linux系统运行的重要组成部分。NLS名称的形式如:nls_.,其中字符集名称是指支持的字符集类型,如utf8、gbk等;本地化名称是指支持的区域和语言类型,如简体中文、英文、日文等。 三、 NLS名称的作用和应用 1、 文件系统的编码 在Linux中,文件系统的编码是由NLS名称控制的。当文件系统的编码与当前的语言环境不匹配时,就可能出现无法识别字符、乱码等情况。例如,在中文环境下使用Windows系统创建的文件,需要将文件系统的NLS名称设置为支持中文的字符集名称和本地化名称,才能正确地读写中文内容。同样地,在使用Linux系统时,也需要根据自己的语言环境选择合适的NLS名称,以确保文件系统的编码正确无误。 2、 系统日志的记录 系统日志是Linux系统重要的运行记录、调试和故障排除工具。在记录系统日志时,NLS名称也很重要。如果日志文件使用的编码与当前的语言环境不匹配,就会出现乱码或无法显示的情况,从而影响日志的可读性和分析效果。因此,在记录系统日志时,需要将NLS名称设置为与当前语言环境相同的字符集和本地化环境。 3、 系统时间的设置 在Linux中,时间的显示和处理是受NLS名称限制的。系统时间是一个重要的指标,不同语言环境下需要显示不同的时间格式。例如,在中文环境下,时间通常以“年、月、日、时、分、秒”的格式显示,而在英文环境下则以“日、月、年、时、分、秒”的格式显示。因此,在设置系统时间时,需要根据环境选择合适的NLS名称,以确保时间的格式正确无误。 四、 NLS名称的使用方法 在Linux中,NLS名称的使用方法通常有两种。一种是在启动系统时,在命令行中添加-nls参数来指定NLS名称,例如: [root@localhost ~]# mount -o nls=utf8 /dev/sdb1 /mnt 这表示在挂载/dev/sdb1分区时使用utf8编码的文件系统。另一种是通过修改系统配置文件/etc/locale.conf来设置全局的NLS名称,例如: [root@localhost ~]# vi /etc/locale.conf LANG=en_US.UTF-8 这表示将系统的全局语言环境设置为英文语言环境,并使用UTF-8编码。 五、 结论 相关问题拓展阅读: linux 编译内核几个常见问题解决方法 linux 编译内核几个常见问题解决方法 之一次把自己编译的驱动模块加载进开发板,就出现问题,还好没花费多长时间,下面列举出辩戚现的问题及解决方案 1:出现inod: error inserting ‘hello.ko’: -1 Invalid module format 法一(网上的):是因为内核模块生成的环境与运行的环境不一致,用linux-2.6.27内核源代码生成的模块,可能就不能在linux-2.6.32.2内核的linux环境下加载,需要在linux-2.6.27内核的linux环境下加载。 a.执行 uname -r //查看内核版本 b.一般出错信息被记录在文件/var/log/messages中,执行下面命令看错误信息 # cat /var/log/messages |tail 若出现类似下面: Jun 4 22:07:54 localhost kernel:hello: version magic ‘2.6.35.6-45.fc14.i686.PAE ‘ should be ‘2.6.35.13-92.fc14.i686.PAE’ 则把 Makefile里的KDIR :=/lib/modules/2.6.35.6-45.fc14.i686.PAE/build1 改为 KDIR :=/lib/modules/2.6.35.13-92.fc14.i686.PAE/build1 //改成自己内核源码路径 (这里的build1是一个文件链接,链接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的) 然并卵,我的fedora 14 /usr/src/kernels下并没有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,虽然不知道两者有什么区别,但改成2.6.35.13-92.fc14.i686还是不行,照样这个问题,还好后来在看教学视频的到启发 法二:改的还是那个位置 KDIR :=/opt/FriendlyARM/linux-2.6.32.//把这里改成你编译生成kernel的那个路径 all: $ (MAKE) -C $ (KDIR) M = $ (PWD) modules ARCH=arm CROSS_COMPILE=arm-linux- //加这句 2. hello: module license ‘unspecified’ taints kernel. Disabling lock debugging due to kernel taint 方法:在模块程序中加入: MODULE_LICENSE(“GPL”); 3....

技术分享