所以线程Why does glibc “timezone” global not agree with system time on DST?不是我问题的解决方案。
我的系统有glibc 2.11.3
,我为我的项目编译了glibc 2.22
。我运行了make localedata/install-locales
。
此MCVE仅在链接到旧glibc
版本时才显示正确的时间。将它与新的glibc
版本链接起来,它将显示UTC时间:
#include <time.h>
#include <stdio.h>
int main()
{
struct tm * tmNow;
time_t dtNow;
char sBuffer [100];
tzset();
time( &dtNow );
tmNow = localtime( &dtNow );
strftime( sBuffer, sizeof(sBuffer), "%Y-%m-%d %T", tmNow );
printf("%ld - %s\n", timezone, sBuffer);
}
当我试图在新的tzselect
版本的bin/
目录中运行glibc
时,我会得到以下错误:
./tzselect: line 171: /usr/glibc/share/zoneinfo/iso3166.tab: No such file or directory
./tzselect: time zone files are not set up correctly
它或多或少地说明了一切,但就目前而言,我无法了解如何设置文件/usr/glibc/share/zoneinfo/iso3166.tab
。
如何永久设置新 glibc
版本的时区?
我不想使用TZ变量!
UPDATE:使用TZ
变量不会改变任何事情。我想我没有正确配置新的glibc
版本。
UPDATE:将现有的/usr/share/zoneinfo
系统目录复制到新的/usr/glibc/share/zoneinfo
目录中,至少解决了TZ
变量的问题。但是,只要没有设置TZ
变量,新的glibc
版本就不会识别正确的时区。
发布于 2016-02-11 18:16:06
我用vi
打开了新的vi
库,并搜索了localtime
。
新glibc
版本正在寻找localtime
的硬编码目录被设置为/usr/glibc/etc
。
然后,这是一个简单的任务:我运行了命令
ln -s /usr/share/zoneinfo/Europe/Vienna /usr/glibc/etc/localtime
现在,在新的localtime
版本中,无需使用TZ
变量就可以正确识别TZ
。
https://stackoverflow.com/questions/35345114
复制相似问题