关于在android commad line run dynamic binary....

发布于 2022-10-15 07:57:55 字数 993 浏览 15 评论 0

我尝试在android 的命令行中运行一个自己的简单程序,比如
int main(void)
{
   return 0;
}

编译的时候,如果是在android环境中编译,那么可以正常的在CMD LINE 跑,
但是,如果我不是在android目录下编译,使用的也不是android带的libc.so之类的,
1.如果编译出来的是static的 可执行文件test,那么可以在命令行正常运行。
2.如果编译出来的是dynamic binary test,那么在命令行运行的时候,会提示:
  sh: can not find command test 之类的提示,无法运行。
此时,我已经把编译时候使用的libc.so.6 放到 某一下目录,并且在跑 ./test 之前,
已经export LD_LIBRARY_PATH=...path 了。

MS是,系统中的loader 没有去load library,
我猜,loader library 这功能,是否已经移植到android的某一个服务之类的上面了?
必要要启动这个服务所么的,才可以链接动态库?

另外,ldd的时候可以看到(x86下):
ldd test
        linux-vdso.so.1 =>  (0x00007fff6a184000)
        libc.so.6 => /lib/libc.so.6 (0x00007f5324524000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f53248c3000)

请问,如果我需要在命令行跑一个我的C程序,而且是有动态链接库的,
那么要怎么样才可以实现呢??

谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

小姐丶请自重 2022-10-22 07:57:55

说明一下,我之所以要这样做,是我想仅仅是kernel跑起来,而不启动任何关于android的东西(以后可能包括init),然后就可以跑自己的程序。

这个俗人 2022-10-22 07:57:55

发在这个板,我觉得也应该靠谱。
这是为了在linux下跑一个C的小程序。。。。

海夕 2022-10-22 07:57:55

PS。
1.linux kernel 2.6.25
2.android 2.1
3.arm9 core

Did I miss something?

回忆躺在深渊里 2022-10-22 07:57:55

难道不通过JNI就不可以。。。。不可能。。。。。

我很坚强 2022-10-22 07:57:55

# ./test                                                                        
sh: ./test: not found

东北女汉子 2022-10-22 07:57:55


终于搞定。
狗日的真的把LINKER改了。。

晨与橙与城 2022-10-22 07:57:55

下面是几个不同环境编译出来的版本,strings 出来的结果
X86(ubutun 10.04)
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
------------------------------------------------------------------------------------
/lib64/ld-linux-x86-64.so.2
W_ed[
libc.so.6
__libc_start_main
__printf_chk
sleep
__gmon_start__
GLIBC_2.2.5
GLIBC_2.3.4
l$ L
t$(L
|$0H
Test compiler.

日记撕了你也走了 2022-10-22 07:57:55

把代码添加到andriod 目录树下面,使用mm编译:
(android2.1)
========================
/system/bin/linker
libc.so
libstdc++.so
libm.so
__libc_init
puts
sleep
__aeabi_unwind_cpp_pr0
__exidx_start
__exidx_end
__data_start
_edata
__bss_start
__bss_start__
__bss_end__
__end__
_stack
Test compiler.

一身仙ぐ女味 2022-10-22 07:57:55

这个是在andriod目录数以外,使用 arm-none-linux-gnueabi-gcc 编译,动态链接的可执行文件得出的:
======================
/lib/ld-linux.so.3
libc.so.6
abort
__libc_start_main
puts
sleep
libgcc_s.so.1
__aeabi_unwind_cpp_pr0
__gmon_start__
_Jv_RegisterClasses
__aeabi_unwind_cpp_pr1
GCC_3.5
GLIBC_2.4
Test compiler.
~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文