0

我最近用 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,但如果可能的话,重新配置它们以使用交叉编译工具链,所以任何允许这样做的建议都将非常感激。

4

1 回答 1

1

clock_gettime()Android 的“仿生”C 库有一个系统调用的包装器。如果您使用 Android NDK 构建,您将自动获得它。否则,您需要以某种方式将仿生库添加到您的工具链中。

或者,您可以直接通过程序集调用系统调用(从内存中,第一个参数进入 R0,第二个参数进入 R1,您将系统调用编号放入 R7,发出“SWI $0”并在 R0 中找到结果代码)。

或者:你为什么要打扰clock_gettime?有什么理由不能简单地使用 gettimeofday()?

于 2012-08-03T20:54:37.937 回答