首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setlocale()使用什么文件?

setlocale()使用什么文件?
EN

Stack Overflow用户
提问于 2012-06-07 20:03:58
回答 2查看 821关注 0票数 0

不允许在shared CentOS服务器上编译。因此,我在我的Debian电脑上编译我的程序,将它与Debian的系统库如libc等链接起来,然后我上传我的程序和Debian系统库,我的程序工作。唯一的问题是setlocale()在CentOS上不起作用。CentOS安装了"en_US.utf8“,可以在除我以外的所有程序上运行。我怀疑我还需要上传Debian的locale文件吗?如何将我的程序链接到Debian locale文件?我试着使用LOCPATH,但我不确定它是如何工作的。我必须链接到哪些文件以及如何链接?

C程序:

代码语言:javascript
复制
setenv("LOCPATH", "/", 1);

if (setlocale(LC_ALL, "en_US.utf8") == NULL) {
    puts("not set");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-09 19:28:16

我使用十六进制编辑器修改了/usr/lib/locale/locale-archive的路径,根据strace,这显然是setlocale()使用的唯一文件。这个方法很脏,但它是有效的。

根据man LOCPATH的说法,此环境变量是非标准的,因此不建议使用它。任何地方都没有给出如何使用它的示例,也没有给出指向“locale对象文件”的路径的确切含义。

我猜修改路径的唯一真正方法是glibc修改和重新编译。

票数 0
EN

Stack Overflow用户

发布于 2012-06-07 21:49:15

引用:LOCPATH is an environment variable that tells the setlocale() function the name of the directory from which to load locale object files. If LOCPATH is not defined, the default directory /usr/lib/nls/locale is searched. LOCPATH is similar to the PATH environment variable; it contains a list of z/OS UNIX directories separated by colons.

因此,仅仅指定/并希望它执行递归搜索是行不通的。

您还可以生成一个静态二进制文件,并将其上传到主机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10931404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档