Libfaketime Linux 3.1.0?

Libfaketime Linux 3.1.0?

本文关键字:Linux Libfaketime      更新时间:2023-10-16

我正在尝试创建一个像RunAsDate的Linux软件。我正在Linux 3.1.0上工作,libaketime不起作用。有人能帮我一下吗?我想我有最新的版本。
问题来了:

$ ./faketime 'last friday 5 pm' /bin/date
date: symbol lookup error: /usr/lib/faketime/libfaketime.so.1: undefined symbol: dlsym
Error: Timestamp to fake not recognized, please re-try with a different timestamp. 

我运行sudo make install,然后链接/usr/local/lib/faketime到/usr/lib/faketime。

编辑:作为对hotchl的回答的回应,这里是(相同的)输出:

$ tar paxvf libfaketime-0.8.1.tar.gz
libfaketime-0.8.1/
libfaketime-0.8.1/test/
libfaketime-0.8.1/test/Makefile
libfaketime-0.8.1/test/timetest.c
libfaketime-0.8.1/test/test.sh
libfaketime-0.8.1/README
libfaketime-0.8.1/Makefile
libfaketime-0.8.1/man/
libfaketime-0.8.1/man/Makefile
libfaketime-0.8.1/man/faketime.1
libfaketime-0.8.1/src/
libfaketime-0.8.1/src/Makefile
libfaketime-0.8.1/src/faketime
libfaketime-0.8.1/src/faketime.c
libfaketime-0.8.1/meta/
libfaketime-0.8.1/meta/Makefile
libfaketime-0.8.1/meta/Changelog
libfaketime-0.8.1/meta/COPYING
$ cd libfaketime-0.8.1/src
$ make
gcc -o faketime.o -c -std=gnu99 -Wall -DFAKE_STAT -DFAKE_INTERNAL_CALLS -fPIC  faketime.c
gcc -o libfaketime.so.1 -Wl,-soname,libfaketime.so.1 -shared -ldl -lm -lpthread faketime.o
gcc -o faketimeMT.o -c -std=gnu99 -Wall -DFAKE_STAT -DFAKE_INTERNAL_CALLS -fPIC -DPTHREAD -DPTHREAD_SINGLETHREADED_TIME faketime.c
gcc -o libfaketimeMT.so.1 -Wl,-soname,libfaketimeMT.so.1 -shared -ldl -lm -lpthread faketimeMT.o
$ LD_PRELOAD=`pwd`/libfaketime.so.1 FAKETIME="-15d" /bin/date
/bin/date: symbol lookup error: ./libfaketime.so.1: undefined symbol: dlsym

你的/bin/date是动态链接的可执行文件吗?ldd/bin/date是否显示对共享库的依赖关系?另外,它是否链接到libdl.so.2?

如果它是动态链接,但没有链接到libdl.so.2。,添加/lib/libdl.so

好的,下面是有效的:

$ tar paxvf libfaketime-0.8.1.tar.gz
libfaketime-0.8.1/
libfaketime-0.8.1/test/
libfaketime-0.8.1/test/Makefile
libfaketime-0.8.1/test/timetest.c
libfaketime-0.8.1/test/test.sh
libfaketime-0.8.1/README
libfaketime-0.8.1/Makefile
libfaketime-0.8.1/man/
libfaketime-0.8.1/man/Makefile
libfaketime-0.8.1/man/faketime.1
libfaketime-0.8.1/src/
libfaketime-0.8.1/src/Makefile
libfaketime-0.8.1/src/faketime
libfaketime-0.8.1/src/faketime.c
libfaketime-0.8.1/meta/
libfaketime-0.8.1/meta/Makefile
libfaketime-0.8.1/meta/Changelog
libfaketime-0.8.1/meta/COPYING
$ cd libfaketime-0.8.1/src
$ make
gcc -o faketime.o -c -std=gnu99 -Wall -DFAKE_STAT -DFAKE_INTERNAL_CALLS -fPIC  faketime.c
gcc -o libfaketime.so.1 -Wl,-soname,libfaketime.so.1 -shared -ldl -lm -lpthread faketime.o
gcc -o faketimeMT.o -c -std=gnu99 -Wall -DFAKE_STAT -DFAKE_INTERNAL_CALLS -fPIC -DPTHREAD -DPTHREAD_SINGLETHREADED_TIME faketime.c
gcc -o libfaketimeMT.so.1 -Wl,-soname,libfaketimeMT.so.1 -shared -ldl -lm -lpthread faketimeMT.o
$ LD_PRELOAD=`pwd`/libfaketime.so.1 FAKETIME="-15d" /bin/date
Sat Nov  5 06:10:46 CET 2011

脚本faketimesrc不知怎的没有为我工作,但它是早上6点,所以也许我只是太累了;-)它包含了很多参考文档的评论,所以我猜你可以通过查看那里使它工作。