I'm afraid that I cannot reproduce the problem on Fedora 26 x86-64, built this way: git clone https://github.com/eggert/tz cd tz make TOPDIR=/tmp/tz install If I then build and run your program as follows, it is missing an #include directive but seems to run OK: $ gcc test_tz_simple.c libtz.a test_tz_simple.c: In function ‘main’: test_tz_simple.c:25:1: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration] printf ("epoch:%lld, %lld-%02d-%02d %02d:%02d:%02d gmtoff: %ld, TZ: %s\n", ^~~~~~ test_tz_simple.c:25:1: warning: incompatible implicit declaration of built-in function ‘printf’ test_tz_simple.c:25:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’ 1015-Penguin $ TZ=Asia/Manila ./a.out epoch:1509658032, 2017-11-03 05:27:12 gmtoff: 28800, TZ: +08 Time: 2017-11-03 05:27:12.1509658032 +0800 I suggest that you run the program as follows, and compare your output to what I get: $ TZ=Asia/Manila strace -o tr ./a.out epoch:1509658190, 2017-11-03 05:29:50 gmtoff: 28800, TZ: +08 Time: 2017-11-03 05:29:50.1509658190 +0800 $ grep Manila tr open("/tmp/tz/etc/zoneinfo/Asia/Manila", O_RDONLY) = 3