我最近在C中开发了一个项目,它利用linux中的函数clock_gettime()。我在Ubuntu桌面上的链接是使用链接器标志实现的:
gcc -lrt foo.c
我很高兴看到我可以在下面的帖子中交叉编译我的Android项目。
http://benno.id.au/blog/2007/11/13/android-native-apps
虽然我使用命令:
,但我已经尝试了这个项目arm-linux-gnueabi-gcc -static foo.c -o foo
而不是命令:
arm-none-linux-gnueabi-gcc -static foo.c -o foo
在链接中提到,他们确实编译和链接很好,但当我尝试我的项目需要clock_gettime()和链接时:
-ltr
失败了:
undefined reference to `clock_gettime'
我已经读过-lrt指定的库对于Android来说不存在,我发现其他地方的帖子声称人们在Android项目上使用了clock_gettime(),但我找不到正确的库链接到这个。任何人都可以告诉我我需要链接到ARM以使其工作吗?
或者就可以在Android上运行的替代方案提出任何其他建议。
我非常有兴趣利用我的桌面Linux项目中的现有makefile到我能做到的程度,但是如果可能的话,重新配置它们以使用交叉编译工具链,所以任何允许这样做的建议都会非常非常感谢。
答案 0 :(得分:1)
Android的“仿生”C库有clock_gettime()
系统调用的包装器。如果您使用Android NDK构建,您将自动获得。否则,您需要以某种方式向工具链添加仿生库。
或者,您可以通过汇编直接调用系统调用(从内存中,第一个参数在R0中,第二个在R1中,您将系统调用号放在R7中,发出“SWI $ 0”并在R0中查找结果代码)
或者:你为什么要烦扰clock_gettime?你有什么理由不能简单地使用gettimeofday()?