Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Libfaketime Linux 3.1.0?_C++_Linux - Fatal编程技术网

C++ Libfaketime Linux 3.1.0?

C++ Libfaketime Linux 3.1.0?,c++,linux,C++,Linux,我正在尝试为Linux创建一个类似RunAsDate的软件。我在Linux 3.1.0上工作,而libfaketime不工作。 有人能帮我吗? 我想我有最新的版本。 问题是: $ ./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 reco

我正在尝试为Linux创建一个类似RunAsDate的软件。我在Linux 3.1.0上工作,而libfaketime不工作。 有人能帮我吗? 我想我有最新的版本。
问题是:

$ ./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. 
我运行了
sudomakeinstall
,然后将/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
Sat Nov  5 06:10:46 CET 2011

src
中的脚本
faketime
对我来说不起作用,但现在是早上6点,所以可能我太累了;-)它包含了许多引用文档的注释,因此我想您可以通过查看这些注释来实现它。

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


如果它是动态链接的,但没有链接到libdl.so.2,请将/lib/libdl.so.2添加到LD_预加载路径。

libfaketime有什么问题吗?很抱歉!我编辑了这篇文章。没有足够的信息。请重新启动问题:)嗯,我假设您使用的是源tarball,但错误显示为
/usr/lib/faketime/libfaketime.so.1
,这在您的系统上有所不同。我建议先尝试一种简单的测试格式,比如
FAKETIME=“-1d”
之类。您的/bin/date是动态链接的可执行文件吗?ldd/bin/date是否显示对共享库的依赖关系?另外,它是否链接到libdl.so.2?如果没有,请尝试将/lib/libdl.so.2添加到LD_预加载路径。好吧,这很奇怪,它看起来像是缺少了
-ldl
,但编译时已明确设置了
-ldl
。很抱歉之前没有给出“正确答案”!我可以确认这是有效的:)
$ 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