关于在android commad line run dynamic binary....
我尝试在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技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
说明一下,我之所以要这样做,是我想仅仅是kernel跑起来,而不启动任何关于android的东西(以后可能包括init),然后就可以跑自己的程序。
发在这个板,我觉得也应该靠谱。
这是为了在linux下跑一个C的小程序。。。。
PS。
1.linux kernel 2.6.25
2.android 2.1
3.arm9 core
Did I miss something?![](https://www.wenjiangs.com/wp-content/uploads/chinaunix/202207/em14.gif)
难道不通过JNI就不可以。。。。不可能。。。。。
# ./test
sh: ./test: not found
终于搞定。
狗日的真的把LINKER改了。。
下面是几个不同环境编译出来的版本,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.
把代码添加到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.
这个是在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.
~